1.快速排序由C. A. R. Hoare在1962年提出。快速排序是对冒泡排序的一种改进,采用了一种分治的策略。
2.在区间中随机挑选一个元素作基准,将小于基准的元素放在基准之前,大于基准的元素放在基准之后,再分别对小数区与大数区进行排序。
#include<stdio.h>
void QkSort(int *arr, int left, int right){
if (left > right)
{
return;
}
int tmp = arr[left];
int i = left;
int j = right;
while (i != j)
{
while (arr[j] >= tmp && j > i)
{
j--;
}
while (arr[i] <= tmp && j > i)
{
i++;
}
if (j > i)
{
int t = arr[i];
arr[i] = arr[j];
arr[j] = t;
}
}
arr[left] = arr[i];
arr[i] = tmp;
QkSort(arr, left, i - 1);
QkSort(arr, i + 1, right);
}
int main()
{
int arr[] = { 3,8,7,9,5,1,2,3,6,5,4,8 };
int len = sizeof(arr)/sizeof(int);
printf("原数值:");
for (int i = 0; i <=len-1; i++)
{
printf("%d ",arr[i]);
}
printf("\n");
printf("排序后:");
QkSort(arr,0,len-1);//调用快速排序函数
for (int i = 0; i <=len-1; i++)
{
printf("%d ", arr[i]);
}
}