快速排序详解
Posted blog-for-r-e
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了快速排序详解相关的知识,希望对你有一定的参考价值。
快速排序详解
- 基本思想
快速排序的基本思想是:通过一趟排序将要排序的数据分割分类照片中翻译独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据进行分别快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
- 代码:
#include<iostream> using namespace std; void qsort(int, int); int a[101]; int main() { int n; cin >> n; for (int i = 1; i <= n; i++) cin >> a[i]; qsort(1, n); for (int i = 1; i <= n; i++) cout << a[i] << " "; cout << endl; } void qsort(int l, int r) { int i, j, mid, p; i = l; j = r; mid = a[(l + r) / 2]; //将当前序列在中间位置的数定义为分隔数 do { while (a[i] < mid) i++;//在左半部分寻找比中间数大的数 while (a[j] > mid) j--;//在右半部分寻找比中间数小的数 if (i <= j) { //若找到一组与排序目标不一致的数对,则交换它们 p = a[i]; a[i] = a[j]; a[j] = p; i++; //继续找 j--; } }while(i <= j); //注意这里不能少了等号 if (l < j) qsort(l, j); //若未到两个数的边界,则递归搜索左右区间 if (i < r) qsort(i, r); }
以上是关于快速排序详解的主要内容,如果未能解决你的问题,请参考以下文章