快速排序

标签: 快速排序
719人阅读 评论(0) 收藏 举报
分类:

快速排序是分治算法的典型应用,基本策略:

将数组A[1..n]分成两个子数组B[1..p]和B[p+1..n],使得B[1..p]中的元素均不大于B[p+1..n]中的元素,然后分别对这两个数组进行排序,最后把两个数组连接起来。

代码

#include <iostream>
using namespace std;

void printArray(int a[],int n){
    for(int i=0;i<n;i++){
       cout<<a[i]<<"\t";
    }
}


inline void Swap(int &s,int &t){
   int temp=s;
   s=t;
   t=temp;
}

int Partition(int a[],int p,int r){
    int i=p,j=r+1;
    int x=a[p];
    while(true){
         while(a[++i]<x);
         while(a[--j]>x);
         if(i>=j){break;}
         Swap(a[i],a[j]);
    }
    a[p]=a[j];
    a[j]=x;
    return j;
}

void QuickSort(int a[],int p,int r){
    if (p<r)
    {
        int q=Partition(a,p,r);
        QuickSort(a,p,q-1);
        QuickSort(a,q+1,r);
    }
}

int main(){
    int a[10]={10,3,90,22,8,1,20,100,33,106};
    cout<<"排序前:\n";
    printArray(a,10);
    QuickSort(a,0,9);
    cout<<"排序后:\n";
    printArray(a,10);
}

运行结果

排序前:
10  3   90  22  8   1   20  100 33  106
排序后:
1   3   8   10  20  22  33  90  100 106 
查看评论

快速排序快速排序快速排序快速排序快速排序

  • 2008年11月20日 15:48
  • 1008B
  • 下载

快速排序实例化(详细过程)

数组a[] = {8,10,23,48,7,6,11,13,17,19,20,14,5},  1)、设置两个变量i、j,排序开始的时候i=1,j=13; 2)以第一个数组元素作为关键数据,赋值给x...
  • qq_22186183
  • qq_22186183
  • 2016-12-24 16:43:55
  • 1582

quicksort快速排序

  • 2009年06月09日 22:30
  • 2KB
  • 下载

快速排序的分析与算法实现

  • 2008年09月28日 10:28
  • 4KB
  • 下载

什么是快速排序

什么是快速排序 快速排序简介 快速排序(英文名:Quicksort,有时候也叫做划分交换排序)是一个高效的排序算法,由Tony Hoare在1959年发明(1961年公布)。当情况良好时,...
  • miao309410364
  • miao309410364
  • 2015-06-05 13:28:19
  • 1042

快速排序 过程图解

注意:此文为转载文章,原文地址为:http://www.cnblogs.com/ahalei/p/3568434.html            原作者:啊哈磊              ...
  • hrn1216
  • hrn1216
  • 2016-05-28 19:39:04
  • 28926

快速排序的三种实现方式以及非递归版本

一、快速排序的基本思想 快速排序利用了分治的思想,分而治之。通过一趟排序将序列分为两部分,其中一部分比较关键字小,一部分比关键字大。之后继续对这两个子序列重复此过程,直到整个序列都有序。 二、快速...
  • a1414345
  • a1414345
  • 2017-07-02 22:30:59
  • 1916

快速排序和随机快速排序

原创作品 转载请注明出处http://blog.csdn.net/always2015/article/details/46523531一、问题描述实现对数组的普通快速排序与随机快速排序 (1)实...
  • Always2015
  • Always2015
  • 2015-06-16 21:10:47
  • 4061

快速排序 快速排序快速排序快速排序

  • 2010年05月25日 15:16
  • 694B
  • 下载

【面试题之算法部分】深入快速排序

本篇文章我将讲述快速排序的基本思想,实现,和时间复杂度的深入分析。基本思想:选取待排序列中的某个元素t,然后按照与该元素的大小关系重新整理序列中的元素,使得整理后的序列中排在t以前的元素均小于t,排在...
  • YoungLeoo
  • YoungLeoo
  • 2015-08-24 18:22:40
  • 1306
    StackOverFlow
    http://stackoverflow.com/users/6526424
    统计
    个人资料
    专栏达人 持之以恒
    等级:
    访问量: 101万+
    积分: 9702
    排名: 2297
    博客专栏
    最新评论