标签:
4-3 QuickSort.c
1 #include <stdio.h> 2 #include "4-1 CreateData.c" 3 #define ARRAYLEN 10 4 int Division(int a[],int left, int right) //分割 5 { 6 int base=a[left]; //基准元素 7 while(left<right) 8 { 9 while(left<right && a[right]>base) 10 --right; //从右向左找第一个比基准小的元素 11 a[left]=a[right]; 12 while(left<right && a[left]<base ) 13 ++left; //从左向右找第一个比基准大的元素 14 a[right]=a[left]; 15 } 16 a[left]=base; 17 return left; 18 } 19 void QuickSort(int a[],int left,int right) 20 { 21 int i,j; 22 if(left<right) 23 { 24 i=Division(a,left,right); //分割 25 QuickSort(a,left,i-1); //将两部分分别排序 26 QuickSort(a,i+1,right); 27 } 28 } 29 int main() 30 { 31 int i,a[ARRAYLEN]; 32 for(i=0;i<ARRAYLEN;i++) 33 a[i]=0; 34 if(!CreateData(a,ARRAYLEN,1,100)) 35 { 36 printf("生成随机数不成功!\n"); 37 getch(); 38 return 1; 39 } 40 printf("原数据:"); 41 for(i=0;i<ARRAYLEN;i++) 42 printf("%d ",a[i]); 43 printf("\n"); 44 QuickSort(a,0,ARRAYLEN-1); 45 printf("排序后:"); 46 for(i=0;i<ARRAYLEN;i++) 47 printf("%d ",a[i]); 48 printf("\n"); 49 getch(); 50 return 0; 51 }
标签:
原文地址:http://www.cnblogs.com/wozixiaoyao/p/5683149.html