快速排序是一种非常快速的排序算法。其基本思想是:
在数列中选择一个基准数。
将所有小于基准数的数字放在基准数的左边,所有大于基准数的数字放在基准数的右边。
对基准数左右两边的数列分别进行快速排序。
下面是一个简单的C语言实现:
void quick_sort(int *arr, int left, int right)
{
int i, j, pivot;
if (left < right)
{
i = left;
j = right + 1;
pivot = arr[left];
do
{
do i++; while (arr[i] < pivot);
do j--; while (arr[j] > pivot);
if (i < j) swap(arr[i], arr[j]);
} while (i < j);
swap(arr[left], arr[j]);
quick_sort(arr, left, j - 1);
quick_sort(arr, j + 1, right);
}
}
在这个实现中,数组arr是要被排序的数列,left是数列的左端点,right是数列的右端点。
我们在数列中选择一个基准数,将所有小于基准数的数字放在基准数的左边,所有大于基准数的数字放在基准数的右边。
然后,我们递归地对基准数左右两边的数列分别进行快速排序。