博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++:快速排序法的代码实现
阅读量:4168 次
发布时间:2019-05-26

本文共 992 字,大约阅读时间需要 3 分钟。

快速排序法

**快速排序法(quick sort)**的基本思想是:通过一趟排序将要排序的记录分割成独立的两部分,其中一部分的所有记录关键码比另外一部分的记录关键码都要小,然后再按此方法对这两部分数据分别进行递归快速排序,从而使序列成为有序序列。

设有A[1]一A[n]的n个数据,选取第一个数据作为关键数据,然后将所有比它小的数据都放到它前面,所有比它大的数据都放到它后面,称为一趟快速排序。其算法是:

①设置两个变量i、j,排序开始的时候i=左边界,j=右边界,令关键数据s=A[i]。
②从 i 开始向前搜索,直到找到小于s的数。
③从 j 开始向前搜索,直到找到小于s的数。
④如果i≤j,则交换A [ i ]和A [ j ]。
⑤重复第②~④步,直到i≥j;将关键数据与A[j]交换。
在这里插入图片描述

#include 
#include
#include
using namespace std;#define N 10void Quicksort(int A[],int n,int left,int right){
//快速排序,n为数组大小,left为左边界,right为右边界 int i,j,t; if(left < right){
//一趟快速排序 i = left; j = right+1; while(1){
while(++i
降序 while(j-1>-1 && A[--j]>A[left]);//J向前搜索,>升序,
<降序 if(i>
=j)break; t=A[i],A[i]=A[j],A[j]=t; //交换 } t=A[left],A[left]=A[j],A[j]=t; //交换 Quicksort(A,n,left,j-1);//左半部分递归 Quicksort(A,n,j+1,right);//右半部份递归 }}int main(){
int A[N],i; srand((unsigned int )time(0)); cout<<"随机生成的数组为:"<

结果如图:

在这里插入图片描述

转载地址:http://fjexi.baihongyu.com/

你可能感兴趣的文章
【Monogdb】MongoDB的介绍以及同类数据库的对比
查看>>
【Monogdb】MongoDB的日志系统
查看>>
【MongoDB】Mongodb数据库之Capped Collection集合
查看>>
【MongoDB】MongoDB数据库之海量存储机制
查看>>
【MongoDB】MongoDB数据库之MapReduce编程模型
查看>>
【MongoDB】MongoDB之优化器Profiler
查看>>
【MongoDB】MongoDB之遗漏知识点
查看>>
【MongoDB】探讨《MongoDB权威指南》书籍中的几点错误
查看>>
【MongoDB】数组和范围查询的相互作用
查看>>
【传递正能量】2014年感动我的十大微视频
查看>>
设计模式学习笔记-状态模式
查看>>
【MongoDB】MongoDB之聚合框架
查看>>
【MongoDB总结】写给想学习MongoDB的小伙伴们
查看>>
2015年的工作计划
查看>>
【时间管理】总结情况,思考做法
查看>>
【时间管理】横向管理工作进程
查看>>
【时间管理】纵向管理工作进程
查看>>
【时间管理】学会管理自己的时间、空间和工具
查看>>
【时间管理】对工作的进度得把控
查看>>
【时间管理】提高行动执行力
查看>>