快速排序

    总结一下快排的模板,O(NlogN)的时间复杂度还是比较实用的,以后直接拿板子套就行

 

 

 1 int vec[100];  //定义将要排序的数组为全局变量
 2 
 3 void quickSort(int left, int right) {
 4     int i = 0, j = 0;
 5     int t = 0, tmp = 0;
 6     if (left > right)
 7         return;
 8     i = left;
 9     j = right;
10     t = vec[left];
11     while (i != j) {
12         while (vec[j] >= t && i < j)  //升序
13         //while (vec[j] <= t && i < j)  //降序
14             j--;
15         while (vec[i] <= t && i < j)  //升序
16         //while (vec[i] >= t && i < j)  //降序
17             i++;
18         if (i < j) {
19             tmp = vec[i];
20             vec[i] = vec[j];
21             vec[j] = tmp;
22         }
23     }
24     vec[left] = vec[i];
25     vec[i] = t;
26 
27     quickSort(left, i - 1);
28     quickSort(i + 1, right);
29 }
30 
31 //注意主函数调用时的范围:quickSort(0, vec长度 - 1);

 

posted @ 2018-10-03 21:39  moujun  阅读(151)  评论(0编辑  收藏  举报