思路:

49  38   65  97 76 13 27

先说自己的想法:

首先看38,发现38比49小,所以换位:

38 49 65  97 76 13 27

这个时候发现65,按理说应该把65放最后面,或者说与27交换位置,变为:

38  49 27 97 76 13 65

这个时候,发现27,27比49小,所以交换位置为:

38 27 49  97 76 13 65

这个时候发现97,我们换97与后面比49小的。

38  27 49 13 76 97 65

这个时候发现13,我们换:

38 27 13 49 76 97 65

后面没有比49 小的了。终止。

我们发现:

每次我们总是从前面找一个比49大的,,从后面找一个比49小的,然后调换他们的位置。

我们发现:这个49所占的位置,是多余的,这个位置可以用来进行交换高低位:

再次变为如下过程:

49 38 65 97 76 13 27

先从后往前找:

找到一个27,比49 小,序列变为:

27 38 65 97 76 13 27

然后从前往后找:

找到一个65,比49大,这个时候把最后一个变为65:

27 38 65 97 76 13 65

关键之处就在于:黄色字所表示的地方正是原来49所占的位置。

再从后往前找。。再找一个比49小的,那就是13:

变为:

27 38 13 97 76 13 65

再从前往后找:

找到97比49大,那么,变为:

27 38 13 97 76 97 65

再从后往前找,一直找到橙色97为止:也就是low的指向:

直到 low=high

这就是快速排序一趟,这个时候我们将橙色97置为49,函数返回它的位置作为分割点。设为partitio

(low,partition-1) 和 (partition,high)两个区间。

排序算法复习之一趟快速排序算法:为什么说关键字所占的位置是多余的相关推荐

  1. C语言实现一趟快速排序算法

    C语言实现一趟快速排序算法 题目:设计算法,完成一趟快速排序.即将下标从low到high的元素以r[low]为基准分成两部分,小的在前,大的在后. 算法思想: 设要排序的数组是r[ ],首先选取第一个 ...

  2. 经典排序算法(2)——快速排序算法详解

    快速排序(Quick Sort)也是一种典型的交换排序算法,通过交换数据元素的位置进行排序. 一.算法基本思想 (1)基本思想 快速排序的基本思想就是:通过一趟排序将要排序的数据分割成独立的两部分,其 ...

  3. c语言数字排列和算法思路,冒泡排序、快速排序算法理解及C程序实现

    前言:关于 快速排序算法的相关理解,本文借鉴了 啊哈磊 老师的<常用排序--快速排序> ,在此向作者 致敬,写的挺好. 目录 一.冒泡排序 二.快速排序 三.小结 一.冒泡排序 冒泡排序是 ...

  4. 快速排序算法-c语言实现,快速排序算法实现(C语言)(转)

    快速排序算法 的基本思想是:将所要进行排序的数分为左右两个部分,其中一部分的所有数据都比另外一 部分的数据小,然后将所分得的两部分数据进行同样的划分,重复执行以上的划分操作,直 到所有要进行排序的数据 ...

  5. c语言快速排序算法代码,c语言快速排序算法示例代码分享

    #include #include #include #define RANDOM(i) (rand()%i) #define N 9    //设置数组长度 //分区操作 int Partition ...

  6. 十大经典排序算法-快速排序算法详解

    十大经典排序算法 十大经典排序算法-冒泡排序算法详解 十大经典排序算法-选择排序算法详解 十大经典排序算法-插入排序算法详解 十大经典排序算法-希尔排序算法详解 十大经典排序算法-快速排序算法详解 十 ...

  7. 考研DS备考|算法复习|编程or上机准备

    23考研算法复习 一.图论相关算法 1.拓扑排序 2.最小生成树 2.1 Prim算法朴素实现 2.2 最小生成树Kruskal实现 3.最短路 3.1朴素版Dijkstra 3.2Bellman-f ...

  8. 算法导论 实验三 快速排序及其优化

    目录 一.实验目的 二.实验内容 三.实验要求 四.算法设计与分析 五.详细设计与实现 六.结果分析 七.总结 一.实验目的 1. 理解快速排序的概念和基本思想 2. 了解适用快速排序的问题类型,并能 ...

  9. 【转】排序算法复习(Java实现)(一): 插入,冒泡,选择,Shell,快速排序...

    http://www.blogjava.net/javacap/archive/2007/12/13/167364.html 为了便于管理,先引入个基础类: package algorithms; / ...

最新文章

  1. 单步调试_keil for arm 调试时无法单步运行及打断点
  2. 75分钟入门微生物组数据分析和结果解读—刘永鑫(合肥,2021年6月23日)
  3. 01.HTML基础命令笔记
  4. [js] promise的构造函数是同步执行还是异步执行,它的then方法呢?
  5. Java复习之网络编程
  6. 《SAP后勤模块实施攻略—SAP在生产、采购、销售、物流中的应用》——2.7 可配置制造...
  7. ELK-filbeate收集tomcat日志
  8. 基础才是重中之重~LazyInitializer.EnsureInitialized对属性实现化的性能优化
  9. mysql 查询价格区间,mysql统计数量_MySQL统计价格区间内的商品数量sql语句
  10. 【转】一篇易懂的CAN通讯协议指南1
  11. 3D 贴图丢失的检测以及解决办法大全
  12. 如何利用RPLIDAR A2进行多点触摸应用
  13. Logstash 中type 和 tags
  14. 国家认证的Python技术工程师有什么能力要求?
  15. SSD《一》-- 基础知识
  16. java代码将链接转换为二维码
  17. 全球及中国犬淋巴瘤治疗行业研究及十四五规划分析报告
  18. xml遍历文件夹vector_怎么统计指定文件夹下含有.xml格式的文件数目
  19. 1 个方法提升 3 倍执行力
  20. JavaCV 实现照片打马赛克功能

热门文章

  1. asppython份额_2019年7月编程语言榜单公布:Python第一 份额保持较大幅度增长
  2. oracle rodm包,由重启引起的Oracle RAC节点宕机分析及追根溯源
  3. dataframe python格式_python3.6 pandas,Series和DataFrame基础格式与用法,附代码实例
  4. bazel 链接第三方动态库_Linux 动态库与静态库制作及使用详解
  5. PPIO 商业化架构解析
  6. Jenkins一键上线Java项目
  7. Visual Studio 2008 可扩展性开发(九):总结篇
  8. GridView 实现LinkButton下载文件/附件
  9. 重构第15天 移除重复的代码(Remove Duplication)
  10. component表