#include<stdio.h>
void quicksort(int* data, int low, int high) ;
int main()
{
int arr[]={67,23,89,35,28,90,10,24};
quicksort(arr,0,7);
for(int i=0;i<8;i++)
printf("%d ",arr[i]);
}
void quicksort(int *arr, int left, int right)
{
int i,j;
if(left<right)
{
int key=arr[left];
int low=left;
int high=right;
while(low<high)
{
while(low<high&&arr[high]>=key) //比key大的,令arr[high]中的high--
high--;
arr[low]=arr[high]; //否则,将它放在当前的low位置
while(low<high&&arr[low]<=key) //<span style="font-family: Arial, Helvetica, sans-serif;">比key小的,令arr[low]中的low++</span>
low++;
arr[high]=arr[low];<span style="white-space:pre"> </span>//<span style="font-family: Arial, Helvetica, sans-serif;">否则,将它放在当前的high位置</span>
}
arr[low]=key;
quicksort(arr, left, low-1); //对标准值左半部递归调用本函数
quicksort(arr, low+1, right); //对标准值右半部递归调用本函数
}
}
K&R快速排序的解释
最新推荐文章于 2018-05-05 01:28:08 发布