标签:
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