functionPartion (arr, left, right) local TMP =Arr[left] While left < right does while left < right and Arr[right] >= tmp doright = Right-1 End If left < right thenArr[left] =Arr[right] left = left + 1 End while left < right and Arr[left] <= tmp Doleft = left + 1 End If left < right thenArr[right] =Arr[left] right = Right-1 end End Arr[left] = tmp return leftendfunction qsort (arr, left, right) if left < right then local Inde x = partion (arr, left, right) qsort (arr, left, index-1 ) qsort (arr, index + 1 , right) Endendfunction Q_sort (arr, left, right) if left >= right and return end local i = left local j = right local key = Arr[left] While I < J does while I < J and key <= Arr[j] does j = J-1 End Arr[i] = Arr[j] While I < J and key >= Arr[i] do i = i + 1 end arr[j] = arr[i] End arr[i] = key Q_sort (arr, Left, i-1 ) q_sort (arr, i+1 , right) endfunction show_table (tb) For i = 1, #tb, 1 do print (Tb[i]) EndEnd TB = {9,8,4,5,1,2,3 }q_sort (TB, 1, # TB) show_table (TB)
Lua Quick Sort