快速排序 第一种方法
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void quick_sort(int arry[],int left,int right){
if(left>=right) return;
int i=left; int j=right;
int point=arry[left]; //point 中心数
while(i<j){
while(i<j&&arry[j]>=point)j--; //left 找最小数
arry[i]=arry[j];
while(i<j&&arry[i]<=point)i++; //right 招最大数
arry[j]=arry[i];
}
arry[i]=point;
quick_sort(arry,left,i-1); //递归以轴中心left数组
quick_sort(arry,i+1,right); //递归以轴中心right数组
}
void main(){
int arry[]={1,4,7,9,4,3,1,2,77,2};
int arryLength=sizeof(arry)/sizeof(int);
quick_sort(arry,0,arryLength-1); //快速排序调用
for(int add=0;add<arryLength;add++){ //输出数组
printf("%d,",arry[add]);
}
system("pause");
}
快速排序 第二种方法
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int quickSort(int arry[],int left,int right){
int i=left; int j=right;
int point=arry[left]; //point 中心数
while(i<j){
while(i<j&&arry[j]>=point)j--; //left 找最小数
arry[i]=arry[j];
while(i<j&&arry[i]<=point)i++; //right 招最大数
arry[j]=arry[i];
}
arry[i]=point;
return i;
}
void quick_sort(int arry[],int left,int right){
if(left>=right) return;
int i=quickSort(arry,left,right);
quick_sort(arry,left,i-1); //递归以轴中心left数组
quick_sort(arry,i+1,right); //递归以轴中心right数组
}
void main(){
int arry[]={1,4,-1,8755,4,3,1,2,77,2};
int arryLength=sizeof(arry)/sizeof(int);
quick_sort(arry,0,arryLength-1); //快速排序调用
for(int add=0;add<arryLength;add++){ //输出数组
printf("%d,",arry[add]);
}
system("pause");
}