# include <stdio.h>
/**
* 快速排序
* 2016年6月20日13:47:47
*/
void QuickSort(int *, int, int);
int FindPos(int*, int, int);
int main(void)
{
int a[6] = {6, 5, 4, -14, 2, 1};
QuickSort(a, 0, 5); //快排
for(int i=0; i<6; i++) //输出排序后的数组
printf("%d ", a[i]);
printf("\n");
return 0;
}
void QuickSort(int* a, int low, int high)
{
int pos;
if(low < high)
{
pos = FindPos(a, low, high);
QuickSort(a, low, pos-1);
QuickSort(a, pos+1, high);
}
}
int FindPos(int* a, int low, int high) //将第一个元素作为比较值,通过此函数准确找到该元素应该在数组中的正确位置,返回这个正确位置pos
{
int val = a[low]; //每次用于比较的值,这里取每次low~high中的low元素(即第一个元素值)
while(high>low && a[high]>=val)
high--;
a[low] = a[high];
while(high>low && a[low]<=val)
low++;
a[high] = a[low]; //到这里是low == high,就是所要找的pos
a[low] = val; //将第一元素比较的值val赋值给pos位置
return low; //返回pos值,找到了
}
数据结构_P19
最新推荐文章于 2024-05-16 22:00:46 发布