首页 > 代码库 > 转 快速排序
转 快速排序
原文作者不明
1 #include <iostream> 2 using namespace std; 3 4 int AdjustArray(int s[], int l, int r) //返回调整后基准数的位置 5 { 6 int i = l, j = r; 7 int x = s[l]; //s[l]即s[i]就是第一个坑 8 while (i < j) 9 { 10 // 从右向左找小于x的数来填s[i] 11 while(i < j && s[j] >= x) j--; 12 if(i < j) 13 { 14 15 s[i] = s[j]; //将s[j]填到s[i]中,s[j]就形成了一个新的坑 16 i++; 17 } 18 19 // 从左向右找大于或等于x的数来填s[j] 20 while(i < j && s[i] <= x) i++; 21 if(i < j) 22 { 23 s[j] = s[i]; //将s[i]填到s[j]中,s[i]就形成了一个新的坑 24 j--; 25 } 26 } 27 //退出时,i等于j。将x填到这个坑中。 28 s[i] = x; 29 30 return i; 31 }32 33 void quick_sort1(int s[], int l, int r) 34 { 35 if (l < r) 36 { 37 int i = AdjustArray(s, l, r);//先成挖坑填数法调整s[] 38 quick_sort1(s, l, i - 1); // 递归调用 39 quick_sort1(s, i + 1, r); 40 } 41 } 42 43 void main()44 {45 int a[] = {2, 32, 15, 29 ,1, 23, 12};46 quick_sort1(a, 0, sizeof(a)/sizeof(int) - 1);47 48 for (int i = 0; i < sizeof(a)/sizeof(int); i++)49 {50 cout << a[i] << endl;51 }52 }
转 快速排序
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。