快速排序

来源:互联网 发布:gaussdb数据库 编辑:程序博客网 时间:2024/06/06 08:46
#include <stdio.h>void quicksort(int a[],int low,int high);int partition(int a[],int low,int high);int main(){int a[20] = {43,7,12,9,0,67,23,35,18,3,27,54,29,62,37,100,6,14,22,58};int k;for(k = 0;k<sizeof(a)/sizeof(int);k++)printf("%d ",a[k]);printf("\n\n");quicksort(a,0,sizeof(a)/sizeof(int)-1);for(k = 0;k<sizeof(a)/sizeof(int);k++)printf("%d ",a[k]);printf("\n");return 0;}int partition(int a[],int low,int high){int i = low ,j = high ,k,part = a[low];int temp;while(i<j){while(i<j&&a[j]>=part){j--;}if(i<j){temp = a[i];a[i] = a[j];a[j] = temp;i++;}while((i<j)&&(a[i]<=part))i++;if(i<j){temp = a[j];a[j] = a[i];a[i] = temp;j--;}}return j;}void quicksort(int a[],int low,int high){int pos ;if(low < high){pos = partition(a,low,high);quicksort(a,low,pos-1);quicksort(a,pos+1,high);}}


0 0