经典排序算法 - 耐心排序Patience Sorting

这个排序的关键在建桶和入桶规则上

建桶规则:如果没有桶,新建一个桶;如果不符合入桶规则那么新建一个桶

入桶规则:只要比桶里最上边的数字小即可入桶,如果有多个桶可入,那么按照从左到右的顺序入桶即可

举个例子,待排数组[6 4 5 1 8 7 2 3]

第一步,取数字6出来,此时一个桶没有,根据建桶规则1新建桶,将把自己放进去,为了表述方便该桶命名为桶1或者1号桶

第二步,取数字4出来,由于4符合桶1的入桶规则,所以入桶1,并放置在6上边,如下图2所示

第三步,取数字5出来,由于5不符合桶1的入桶规则,比桶1里最上边的数字大,此时又没有其它桶,那么根据建桶规则新建桶2,放入住该桶

第四步,取数字1出来,1即符合入1号桶的规则,比4小嘛,也符合入2号桶的规则,比5也小,两个都可以入,根据入桶规则1入住1号桶(实际入住2号桶也没关系)

第五步,取数字8出来,8比1号桶的掌门1大,比2号桶的掌门5也大,而且就这俩桶,所以8决定自立门派,建立了3号桶,并入住该桶成为首位掌门

第六步,取数字7出来,1号桶,2号桶的掌门都不行,最后被3号桶收服,投奔了3号桶的门下

第七步,取数字2出来,被2号桶掌门收了

第八步,取数字3出来,被3号桶的现任掌门7收了

全部入桶完毕....

然后从第一个桶顺序取出数字1 4 6,2 5,3 7 8

剩下的使用插入排序结束战斗,下班回家也~

返回主目录 [经典排序算法][集锦]

转载于:https://www.cnblogs.com/kkun/archive/2011/11/23/2260291.html

经典排序算法 - 耐心排序Patience Sorting相关推荐

  1. 经典排序算法 - 鸡尾酒排序Cocktail sort

    经典排序算法 - 鸡尾酒排序Cocktail sort 鸡尾酒排序基于冒泡排序,双向循环 还是看例子吧,给定待排数组[2 3 4 5 1] 第一趟过去时的每一步 第一步迭代,2 < 3不换 [2 ...

  2. 经典排序算法 - 希尔排序Shell sort

    经典排序算法 - 希尔排序Shell sort 希尔排序Shell Sort是基于插入排序的一种改进,同样分成两部分, 第一部分,希尔排序介绍 第二部分,如何选取关键字,选取关键字是希尔排序的关键 第 ...

  3. 十大经典排序算法-桶排序算法详解

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

  4. 十大经典排序算法-选择排序算法详解

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

  5. 十大经典排序算法-希尔排序算法详解

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

  6. JavaScript实现十种经典排序算法(js排序算法)

    冒泡排序算法 冒泡排序(Bubble Sort)是一种简单直观的排序算法.冒泡排序算法的步骤描述如下: 比较相邻的元素.如果第一个比第二个大,就交换他们两个. 对每一对相邻元素作同样的工作,从开始第一 ...

  7. 排序算法猴子排序java算法代码实现

    <h1>猴子排序</h1> 原理:现有一组未排序数据和相同数量的方格,然后依次随机地取出数据随机地放入方格中,直到把方格放满即止. 之所以又被称为猴子排序,我的猜测是因为.将这 ...

  8. 排序算法---选择排序(java版)

    简单选择排序 原理 选择排序(Selection Sort)的原理有点类似插入排序,也分已排序区间和未排序区间.但是选择排序每次会从排序区间中找到最小的元素,将其放到已排序区间的末尾. 简单选择排序执 ...

  9. C语言基础排序算法-选择排序

    C语言基础排序算法-选择排序 什么是选择排序? 选择排序(Selection sort)是一种简单直观的排序算法,第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从 ...

最新文章

  1. Requested bean is currently in creation: Is there an unresolvable circular reference?
  2. 一个请求方法是一个线程吗?不是!
  3. openresty开发系列40--nginx+lua实现获取客户端ip所在的国家信息
  4. 合工大五套卷_2021森哥五套卷(五)
  5. MySQL innodb load data.vs.insert 前因后果
  6. android多个文件夹压缩,android文件或文件夹压缩
  7. 去除 Css 表单自动填充黄色背景
  8. java jtextfield 监听_Java JTextField DocumentListener如何用?
  9. Java学习笔记——正则表达式
  10. 数字图像处理理论课件(清华大学计算机科学与技术系)
  11. 矩形窗、汉明窗效果对比(matlab)
  12. unbuntu下gedit编辑花屏(重影 )问题解决
  13. linux终端安装搜狗输入法rpm,Linux下deb包安装工具(附带安装搜狗输入法)
  14. Python经典书籍推荐
  15. POI导出Excel设置自适应列宽
  16. 计算机技术在排水领域的应用,计算机软件在排水工程设计上的应用解析
  17. 离职原因之3B分类问题
  18. python image.open 参数作用,python基础(python Image Library)
  19. The CUDA compiler identification is unknown 解决
  20. —— GPS测量原理及应用复习-8 ——

热门文章

  1. 如何将Spring Bean注入到JSF Converter
  2. 电子政务发展现状的调研分析(转)
  3. Q118:PBRT-V3材质及其对应的反射模型(笔记)
  4. Pyotorch自定义损失函数
  5. 大数据开发笔记(二):Yarn分布式集群操作系统
  6. C++第五章课后习题16-字符串按逆序输出
  7. 大数据应用需注意哪些安全问题
  8. 深圳联通与深圳中琛源科技正式达成了5Gn战略合作
  9. python 计算协方差_Python3Numpy——相关性协方差应用
  10. java char 比较,为什么我在Java中使用char和int进行比较?