码迷,mamicode.com
首页 > 编程语言 > 详细

快速排序

时间:2016-09-26 14:27:10      阅读:138      评论:0      收藏:0      [点我收藏+]

标签:

 1 #include <bits/stdc++.h>
 2 
 3 using namespace std;
 4 
 5 int num[105];
 6 
 7 void quick_sort(int left, int right)
 8 {
 9 
10     int i, j, temp;
11     if(left > right)
12         return;
13     temp = num[left];//始终以当前最左边的数作为基准数
14     i = left;
15     j = right;
16     while(i != j)
17     {
18         //右哨兵从右往左找
19         while(num[j] >= temp && i  < j)
20             j--;
21         //左哨兵从左往右找
22         while(num[i] <= temp && i < j)
23             i++;
24         //当找到符合条件的两个数,交换两个数在数组中的位置
25         if(i < j)
26         {
27             num[i] ^= num[j];
28             num[j] ^= num[i];
29             num[i] ^= num[j];
30         }
31     }
32 
33     //基准数归位
34     num[left] = num[i];
35     num[i] = temp;
36 
37     quick_sort(left, i-1);//递归处理左边
38     quick_sort(i+1, right);//递归处理右边
39 }
40 
41 //测试函数
42 int main()
43 {
44         int i, n;
45         scanf("%d",&n);
46         for(i = 1; i <= n; i++)
47             scanf("%d", &num[i]);
48         quick_sort(1, n);
49         for(i = 1; i <= n; i++)
50             printf("%-5d", num[i]);
51 
52     return 0;
53 }

 

快速排序

标签:

原文地址:http://www.cnblogs.com/x-1204729564/p/5908872.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!