代码:

#include<iostream>
using namespace std;
#define MAXSIZE 20//顺序表的最大长度
typedef int KeyType;//定义关键字类型为整型
typedef int InfoType;
typedef struct
{KeyType key;//关键字项InfoType otherinfo;//其他数据项
}RedType;
typedef struct
{RedType r[MAXSIZE+1];//r[0]闲置或做哨兵单元int length;//顺序表的长度
}SqList;//顺序表类型int Partition(SqList &L,int low,int high)//对顺序表L中的子表r[low..high]进行一趟排序,返回枢轴位置
{KeyType pivotkey;L.r[0]=L.r[low];//用子表的第一个记录作枢轴记录pivotkey=L.r[low].key;//枢轴记录关键字保存在pivotkey中while(low<high)//从表的两端交替地向中间扫描{while(low<high&&L.r[high].key>=pivotkey)--high;L.r[low]=L.r[high];//将比枢轴记录小的记录移到低端while(low<high&&L.r[low].key<=pivotkey)++low;L.r[high]=L.r[low];//将比枢轴记录小的记录移到低端}//whileL.r[low]=L.r[0];return low;
}void QSort(SqList &L,int low,int high)
{int pivotloc;//调用前置初值:low=1,high=L.length//对顺序表L中的子表r[low..high]进行一趟排序,返回枢轴位置if(low<high)//长度大于1{pivotloc=Partition(L,low,high);//将L.r[low..high]一分为二,pivotlocs是枢轴位置QSort(L,low,pivotloc-1);//对左子表递归排序QSort(L,pivotloc+1,high);//对左子表递归排序}
}void QuickSort(SqList &L)//对顺序表L做快速排序
{QSort(L,1,L.length);
}int main()
{SqList L;for(int i=1;i<=10;i++)L.r[i].key=11-i;L.length=10;for(int i=1;i<=L.length;i++)cout<<L.r[i].key<<" ";cout<<endl;QuickSort(L);for(int i=1;i<=L.length;i++)cout<<L.r[i].key<<" ";cout<<endl;return 0;
}

运行结果:

数据结构之快速排序图文详解及代码(C++实现)相关推荐

  1. 数据结构之归并排序图文详解及代码(C++实现)

    代码: #include<iostream> using namespace std; #define MAXSIZE 20//顺序表的最大长度 typedef int KeyType;/ ...

  2. android代码查找快捷键是什么,Android Studio搜索功能(查找功能)及快捷键图文详解(示例代码)...

    1.在当前窗口查找文本[Ctrl+F] F3 向下查找关键字出现位置 Shift+F3 向上一个关键字出现位置 2.在当前工程内查找文本[Ctrl+Shift+F] 先会弹出一个对话框,直接点击[fi ...

  3. 数据结构之堆栈排序图文详解及代码(C++实现)

    代码: #include<iostream> using namespace std; #define MAXSIZE 20//顺序表的最大长度 typedef int KeyType;/ ...

  4. 数据结构与算法之选择排序图文详解及代码 (C++实现)

    实现: #include<iostream> using namespace std; #define MAXSIZE 20//顺序表的最大长度 typedef int KeyType;/ ...

  5. 数据结构之希尔排序图文详解及代码(C++实现)

    问题: 对待排序的数组r[1..n]中的元素进行直接插入排序,得到一个有序的(从小到大)的数组r[1..n]. 算法思想: 1.第一趟取增量d1(d1<n)把全部记录分为d1个组,所有间隔为d1 ...

  6. 数据结构之折半插入排序图文详解及代码(C++实现)

    问题: 对待排序的数组r[1..n]中的元素进行直接插入排序,得到一个有序的(从小到大)的数组r[1..n]. 算法思想: 1.设待排序的记录存放在数组r[1..n]中,r[1]是一个有序序列. 2. ...

  7. 数据结构之直接插入排序图文详解及代码(C++实现)

    问题: 对待排序的数组r[1..n]中的元素进行直接插入排序,得到一个有序的(从小到大)的数组r[1..n]. 算法思想: 1.设待排序的记录存放在数组r[1..n]中,r[1]是一个有序序列. 2. ...

  8. Spring MVC+Spring+Mybatis实现支付宝支付功能(图文详解+完整代码)

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 来源:欧阳思海 github.com/OUYANGSIHAI/si ...

  9. SSM 实现支付宝支付功能(图文详解+完整代码)

    阅读本文大概需要 4 分钟. 前言 本教程详细介绍了如何使用ssm框架实现支付宝支付功能.本文章分为两大部分,分别是「支付宝测试环境代码测试」和「将支付宝支付整合到ssm框架」,详细的代码和图文解释, ...

最新文章

  1. 《系统集成项目管理工程师》必背100个知识点-75配置标识的基本内容
  2. 【题解】luogu P1941 飞扬的小鸟
  3. 用conda安装虚拟的R环境
  4. linux ntp软件下载,Linux_Linux时区同步问题(安装ntp软件过程),下载了一个windows的NTP服务程序 - phpStudy...
  5. Jquery表单与表格的运用
  6. sns分享 jia.js的使用 jiathis插件
  7. S7-200SMART案例分析——伺服接线(二)
  8. qcloud-ocr
  9. 联发科MT5580芯片处理器参数介绍
  10. android textview设置图片大小,修改Textview内图片文字间距和图片大小
  11. 世纪佳缘 小秘书 (可自动吸引异性关注)
  12. 大家都在找那个过滤呜呜祖拉的软件
  13. 人性面前,有多少感情能够经得起考验
  14. 2021年危险化学品经营单位主要负责人考试试卷及危险化学品经营单位主要负责人模拟考试
  15. 基于STM32的智能篮球测温记分记时系统
  16. EBS设置问题_发票验证按钮是灰色的
  17. rsem比对_链特异性参数设不对 结果全是错的
  18. ML算法工程师的三个层次
  19. java学习笔记2(datawhale教程):运算符和表达式、流程控制、数组
  20. JQuery 图片滚动或者div滚屏,适合多图轮播

热门文章

  1. java筑基期(9)----ajaxjson(1)
  2. Java环境变量配置详细步骤
  3. [JAVA基础] 了解构造器Constructor———你真的会用构造器吗?
  4. buu [BJDCTF 2nd]rsa1
  5. 【django】如何搭建虚拟环境(解决mkvirtualenv:未找到命令)
  6. 【django】配置URLconf
  7. python——面向对象进阶之新增属性和方法
  8. Fabric--启动网络手动
  9. CVE-2021-35211: SolarWinds Serv-U SSH 漏洞分析
  10. 1.14 字符串查找(3种方法)indexOf(), lastlndexOf(), charAt()