C语言学习13

快速排序

 1 //快速排序
 2 #include <stdio.h>
 3 
 4 void quicksort(int a[], int left, int right);
 5 
 6 void main()
 7 {
 8     int a[10] = {99, 45, 12, 36, 69, 22, 62, 796, 4, 696};
 9     int i;
10     printf("初始排序: \n");
11     for(i = 0; i < 10; i++)
12     {
13         printf("    %d", a[i]);
14     }
15     quicksort(a, 0, 10);
16     printf("\n快速排序后的结果:\n");
17     for(i=0; i<10; i++)
18     {
19         printf("    %d", a[i]);
20     }
21     printf("\n");
22 }
23 
24 void quicksort(int a[], int left, int right)
25 {
26     int j = left, k = right, temp, point;
27 
28     point = a[(left + right) / 2];
29 
30     while(j <= k)
31     {
32         while(a[j] < point)
33         {
34             j++;
35         }
36         while(a[k] > point)
37         {
38             k--;
39         }
40         if(j <= k)
41         {
42             temp = a[j];
43             a[j] = a[k];
44             a[k] = temp;
45             j++;
46             k--;
47         }
48     }
49     if(left<k)
50     {
51         quicksort(a, left, k);
52     }
53     if(j<right)
54     {
55         quicksort(a, j, right);
56     }
57 }

猜你喜欢

转载自www.cnblogs.com/wangkeqi/p/9415346.html
今日推荐