快速排序

来源:互联网 发布:天尚网络机顶盒好不好 编辑:程序博客网 时间:2024/06/11 06:23

快速排序

#include<stdlib.h>#include<stdio.h>#define ARRAY_LENGTH (10)int partition(int *A,int p,int r){if(A==NULL || p<0 || r<0 || p>r){return NULL;}int x = A[r];int i = p-1;for(int j = p;j < r; j++){if(A[j]<=x){i = i+1;int temp = A[i];A[i] = A[j];A[j] = temp;}}int temp = A[i+1];A[i+1] = A[r];A[r] = temp;return (i+1);}void quick_sort(int *A,int p,int r){if(A==NULL || p<0 || r<0 || p>r){return;}if(p < r){int q = partition(A,p,r);quick_sort(A,p,q-1);quick_sort(A,q+1,r);}}int main(){int A[ARRAY_LENGTH]={9,2,3,1,4,10,6,5,8,7};quick_sort(A,0,ARRAY_LENGTH-1);for(int i=0 ; i<ARRAY_LENGTH ; i++){printf("num  %d : %d\n",i,A[i]);}system("pause");return 0;}

快速排序虽然总体的平均效率是最好的,但也不是任何时候都是最优的算法。比如数组本身已经排好序了,而每一轮排序的时候都是以最后一个数字作为比较的标准,此时快速排序的效率只有O(n^2)

0 0