首页 > 代码库 > 快速排序
快速排序
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 }
快速排序
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。