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

快速排序详解

时间:2019-05-12 10:54:32      阅读:128      评论:0      收藏:0      [点我收藏+]

标签:中间   ios   部分   out   style   sort   cin   span   区间   

快速排序详解

  

  • 基本思想

  快速排序的基本思想是:通过一趟排序将要排序的数据分割分类照片中翻译独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据进行分别快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。

 

  • 代码:

 

#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);
}

 

快速排序详解

标签:中间   ios   部分   out   style   sort   cin   span   区间   

原文地址:https://www.cnblogs.com/Blog-For-R-E/p/10851048.html

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