快速排序

快速排序代码

 1 //按升序排列数组(快速排序)
 2 //i:开始索引,j:结束索引
 3 void sort(int *a, int i, int j)
 4 {
 5     int m, n, temp;
 6     int k;
 7 
 8     m = i;
 9     n = j;
10     k = a[(m + n) / 2]; /*选取的参照*/
11 
12     do
13     {
14         while (a[m]<k && m<j) 
15             m++; /* 从左到右找比k大的元素*/
16 
17         while (a[n]>k && n>i) 
18             n--; /* 从右到左找比k小的元素*/
19 
20         if (m <= n) /*若找到且满足条件,则交换*/
21         { 
22             temp = a[m];
23             a[m] = a[n];
24             a[n] = temp;
25             m++;
26             n--;
27         }
28     }while (m <= n);
29 
30     if (m<j)
31         sort(a, m, j); /*运用递归*/
32 
33     if (n>i)
34         sort(a, i, n);
35 }

 

posted @ 2017-03-21 19:18  柳如风  阅读(156)  评论(0编辑  收藏  举报
https://www.vultr.com/?ref=7677570