//快速排序
#include<stdio.h>
#include<malloc.h>
//malloc可以使用sizeof
int swap(int a[],int i,int j)//交换数组里两个元素 顺序
{int temp=a[j];
a[j]=a[i];
a[i]=temp;
return 0;
}
int display(int a[],int len)//打印数组
{
for(int i=0;i<len;i++)
printf("%d ",a[i]);//数组元素之间有空格
printf("\n") ;
return 0;
}
int quick(int a[],int low,int high){//快速排序,由小到大排序
if(low>=high)
return -1;
int i=low;
int j=high;
int key=a[low];
while(i<j){
while(i<j&&a[j]>=key)
j--;
if(i<j&&a[j]<key)
swap(a,i,j);
while(i<j&&a[i]<=key)
i++;
if(i<j&&a[i]>key)
swap(a,i,j);}
a[i]=key;
quick(a,low,i-1);
quick(a,i+1,high);
}
int main(){
int a[]={3,5,2,5,78,9,1};//这里给定了数组,可以尝试换成随机数组
int n=sizeof(a)/sizeof(a[0]) ;
printf("排序前的数组\n");
display(a,n);
quick(a,0,n-1);
printf("排序后的数组\n");
display(a,n);
return 0;
}
手写快速
最新推荐文章于 2024-07-23 12:24:57 发布