快速排序的思想主要是找到一个轴点,例如本例数组第一个值,然后两个指针(数组下标)一个从后往前寻找比轴点小的数,一个从前往后寻找比轴点大的数,然后交换两个指针处的值。如此最后两指针会相遇,这时候将轴点与目前位置交换位置。如此之后,用递归继续推到,下面贴代码
#include<stdio.h>
void QuickSort(int* arr, int L, int R)
{
if (L >= R) {
return;
}
int i = L;
int j = R;
int x = arr[L];
while (i < j) {
while (i<j && arr[j] >= x) {
j--;
}
arr[i] = arr[j];
while (i < j && arr[i] <= x) {
i++;
}
arr[j] = arr[i];
}
arr[j] = x;
QuickSort(arr, L, i-1);
QuickSort(arr, i+1,R);
}
void main()
{
int arr[9] = { 18,15,6,1,9,13,66,22,7 };
QuickSort(arr, 0, 8);
}