编写快速排序算法,能够对数组进行快速排序
时间: 2023-05-19 16:04:54 浏览: 130
快速排序算法是一种基于分治思想的排序算法,其核心思想是将一个大问题分解成若干个小问题,然后逐个解决这些小问题,最终将它们合并起来得到整个问题的解。以下是一个基于递归实现的快速排序算法的代码:
```
function quickSort(arr, left, right)
if left < right then
local pivot = partition(arr, left, right)
quickSort(arr, left, pivot - 1)
quickSort(arr, pivot + 1, right)
end
end
function partition(arr, left, right)
local pivot = arr[right]
local i = left - 1
for j = left, right - 1 do
if arr[j] <= pivot then
i = i + 1
arr[i], arr[j] = arr[j], arr[i]
end
end
arr[i + 1], arr[right] = arr[right], arr[i + 1]
return i + 1
end
```
该算法的时间复杂度为 O(nlogn),其中 n 为数组的长度。
相关问题
编写快速排序算法,能够对数组进行快速排序。
好的,以下是一个简单的快速排序算法,可以对数组进行快速排序:
function quickSort(array)
if #array < 2 then return array end
local pivot = array[1]
local less, equal, greater = {}, {}, {}
for _, value in ipairs(array) do
if value < pivot then
table.insert(less, value)
elseif value == pivot then
table.insert(equal, value)
else
table.insert(greater, value)
end
end
return table.concat(quickSort(less), equal, quickSort(greater))
end
这个算法首先选择数组的第一个元素作为枢纽元素(pivot),然后将数组分成三组:比它小的元素、与它相同的元素和比它大的元素。接着递归对小于和大于枢纽元素的两组元素进行排序,最后将结果连接起来即可。
希望以上代码对您有帮助。
用python编写快速排序算法,能够对数组进行快速排序
快速排序算法的实现如下:
```
def quick_sort(arr):
if len(arr) <= 1:
return arr
else:
pivot = arr[0]
less = [x for x in arr[1:] if x <= pivot]
greater = [x for x in arr[1:] if x > pivot]
return quick_sort(less) + [pivot] + quick_sort(greater)
```
这个算法首先判断数组长度是否小于等于1,如果是,则直接返回数组;否则,取数组的第一个元素作为基准值(pivot),将数组分为两部分,一部分是小于等于基准值的元素,另一部分是大于基准值的元素。然后递归地对两部分进行快速排序,最后将排好序的两部分和基准值合并起来返回。
阅读全文