标签:数据 quick 大于 int void turn 位置 ret 数组
? 是有关快速排序的
#include<stdio.h>
#include<malloc.h>
/*
1.先把第一个数在这组数中该在的位置pos找到
2.然后用这pos把数组分成两部分
3.对这两部分重复第一步的操作
*/
//声明函数
void quickorder(int*a, int low, int high);//在low到high的区间内排序
int findpos(int*a, int low, int high);
int main(){
int a[6] = {4,-243,6,2,5,2};
quickorder(a, 0, 5);
int i = 0;
for(i;i<=5;i++)
printf("%d\t", a[i]);
return 0;
}
void quickorder(int*a, int low, int high){
int pos;
if(low<high){
pos = findpos(a, low, high);
quickorder(a, low, pos-1);
quickorder(a, pos+1, high);}
}
int findpos(int*a, int low, int high){
int val= a[low];
while(low<high){
while(low<high&&a[high]>=val)//把比val小的东西踢到左边去
high--;
a[low] = a[high];
while(low<high&&a[low]<= val)//把比val小大的东西踢到右边去
low++;
a[high]= a[low];
}//这么一下来,val不仅找到了准确的位置,而且保证其右边均大于它,左边均小于它
a[low]= val;
return high;
}
标签:数据 quick 大于 int void turn 位置 ret 数组
原文地址:https://www.cnblogs.com/xiaolongdejia/p/11179356.html