快速排序是一种分治算法,其核心思想是:
- 选择一个基准元素 pivot
- 根据 pivot 将数组分成两部分,左边的元素都比 pivot 小,右边的元素都比 pivot 大
- 分别对左右两部分再次使用快速排序
- 最终得到一个有序的数组
以下是使用 Pascal 语言实现的快速排序代码:
procedure QuickSort(var A: array of integer; l, r: integer);
var
i, j, pivot, temp: integer;
begin
i := l;
j := r;
pivot := A[(l + r) div 2];
repeat
while A[i] < pivot do Inc(i);
while A[j] > pivot do Dec(j);
if i <= j then
begin
temp := A[i];
A[i] := A[j];
A[j] := temp;
Inc(i);
Dec(j);
end;
until i > j;
if l < j then QuickSort(A, l, j);
if i < r then QuickSort(A, i, r);
end;
在这段代码中,A
是要排序的数组,l
和 r
分别表示当前排序的数组的左右两端。
希望这能帮到你!