快速排序,从小到大,从大到小

    xiaoxiao2021-03-25  134

    从小到大

    #include<stdio.h> #define N 4 void kuaisu(int a[],int left,int right) { int i=left; int j=right; int key=a[i]; if(left>right) { return;//如果函数用int定义会报错 } if(i<j) { while(i<j&&key<a[j])//此处是while不是if { j--; } a[i]=a[j]; while(i<j&&key>a[i]) { i++; } a[j]=a[i]; } a[i]=key;//这句不能漏掉!!! kuaisu(a,left,i-1); kuaisu(a,i+1,right); } void print(int a[]) { for(int i=0;i<N;i++) { printf("%d ",a[i]); } } int main() { int a[4]={1,5,2,4}; kuaisu(a,0,3);//a代表数组的首元素,0表示从数组下表为0的数开始,3表示到数组下标为3的位置结束 print(a); return 0; }

    从大到小

    #include<stdio.h> #define N 4 void kuaisu(int a[],int left,int right) { int i=left; int j=right; int key=a[i]; if(left>right) { return;//如果函数用int定义会报错 } if(i<j) { while(i<j&&key>a[j]) { j--; } a[i]=a[j]; while(i<j&&key<a[i]) { i++; } a[j]=a[i]; } a[i]=key; kuaisu(a,left,i-1); kuaisu(a,i+1,right); } void print(int a[]) { for(int i=0;i<N;i++) { printf("%d ",a[i]); } } int main() { int a[4]={1,5,2,4}; kuaisu(a,0,3);//a代表数组的首元素,0表示从数组下表为0的数开始,3表示到数组下标为3的位置结束 print(a); return 0; }

    注:数组长度可以在#define N 4处改变,同时要改是的main函数里的数组a。

    转载请注明原文地址: https://ju.6miu.com/read-35621.html

    最新回复(0)