帮我写一个快速排序算法
时间: 2023-05-16 16:06:14 浏览: 167
好的,以下是快速排序算法的示例代码:
```
function quickSort(arr)
if #arr <= 1 then
return arr
end
local pivot = arr[1]
local left = {}
local right = {}
for i = 2, #arr do
if arr[i] < pivot then
table.insert(left, arr[i])
else
table.insert(right, arr[i])
end
end
return table.concat({quickSort(left), {pivot}, quickSort(right)})
end
```
这是一个基于 Lua 语言的快速排序算法实现,可以对一个数组进行排序。
相关问题
帮我写一个快速排序算法,用c++
以下是一个基本的快速排序算法的C语言实现:
```
#include <stdio.h>
void quicksort(int arr[], int left, int right) {
int i = left, j = right;
int tmp;
int pivot = arr[(left + right) / 2];
/* partition */
while (i <= j) {
while (arr[i] < pivot)
i++;
while (arr[j] > pivot)
j--;
if (i <= j) {
tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
i++;
j--;
}
};
/* recursion */
if (left < j)
quicksort(arr, left, j);
if (i < right)
quicksort(arr, i, right);
}
int main() {
int arr[] = {10, 7, 8, 9, 1, 5};
int n = sizeof(arr) / sizeof(arr[0]);
int i;
printf("Original array: ");
for (i = 0; i < n; i++)
printf("%d ", arr[i]);
printf("\n");
quicksort(arr, 0, n - 1);
printf("Sorted array: ");
for (i = 0; i < n; i++)
printf("%d ", arr[i]);
printf("\n");
return 0;
}
```
在此实现中,quicksort函数接收一个整数数组,以及数组的左右边界(最初调用将使用0和数组长度-1作为左右边界)。算法使用中间元素作为主元来进行分区,将小于主元的元素移动到左侧,大于主元的元素移动到右侧。然后递归地对左右分区进行相同的操作,直到分区大小为1或0为止。
帮我写一个快速排序算法,用delphi实现
好的,我可以回答这个问题。以下是一个用 Delphi 实现的快速排序算法:
procedure QuickSort(var arr: array of Integer; left, right: Integer);
var
i, j, pivot, temp: Integer;
begin
if left < right then
begin
pivot := arr[left];
i := left;
j := right;
while i < j do
begin
while (i < j) and (arr[j] >= pivot) do
Dec(j);
if i < j then
begin
temp := arr[i];
arr[i] := arr[j];
arr[j] := temp;
end;
while (i < j) and (arr[i] <= pivot) do
Inc(i);
if i < j then
begin
temp := arr[i];
arr[i] := arr[j];
arr[j] := temp;
end;
end;
arr[i] := pivot;
QuickSort(arr, left, i - 1);
QuickSort(arr, i + 1, right);
end;
end;
调用方法:
var
arr: array[..9] of Integer = (9, 8, 7, 6, 5, 4, 3, 2, 1, );
begin
QuickSort(arr, , Length(arr) - 1);
end;
这个算法的时间复杂度为 O(nlogn),可以在大多数情况下快速排序一个数组。
阅读全文