分治法之快速排序

 1 #include <stdio.h>
 2 #include <time.h>
 3 const int MAX=20;
 4 void QuickSort(int a[],int low,int high)
 5 {
 6     if(low>=high)
 7         return ;
 8     int first=low,last=high;
 9     int key=a[low];
10     while(first<last)
11     {
12         while(first<last && a[last]>=key)
13             --last;
14         a[first]=a[last];
15         while(first<last && a[first]<=key)
16             ++first;
17         a[last]=a[first];
18     }
19     a[first]=key;//找准轴值所在位置
20     QuickSort(a,low,first-1);
21     QuickSort(a,first+1,high);
22 }
23 extern void test2()
24 {
25          int length,i;
26          int num[MAX];
27          clock_t start,end;
28          printf("请输入待排序的数组长度(按ctrl+z结束)\n");
29          while(scanf("%d",&length)!=EOF)
30          {
31              printf("请依次输入数组元素\n");
32              for(i=0;i<length;i++)
33                  scanf("%d",num+i);
34              start=clock();
35              QuickSort(num,0,length-1);
36              end=clock();
37              printf("\n-------------------------------------------\n");
38              printf("快速排序(用时%f)后输出元素序列\n",(double)(end-start)/CLOCKS_PER_SEC);
39              for(int i=0;i<length;i++)
40                  printf("%d\t",num[i]);
41              printf("\n");
42              for(i=0;i<length;i++)//清零
43                  num[i]=0;
44              printf("请输入待排序的数组长度(按ctrl+z结束)\n");
45          }
46 }
View Code

 

posted @ 2018-04-20 18:55  聊寂园  阅读(190)  评论(0编辑  收藏  举报