梳排序还是基于冒泡排序,与冒泡不同的是,梳排序比较的是固定距离处的数的比较和交换,类似希尔那样

这个固定距离是待排数组长度除以1.3得到近似值,下次则以上次得到的近似值再除以1.3,直到距离小至3时,以1递减

不太好描述,还是看例子吧

假设待数组[8 4 3 7 6 5 2 1]

待排数组长度为8,而8÷1.3=6,则比较8和2,4和1,并做交换

[8 4 3 7 6 5 2 1]

[8 4 3 7 6 5 2 1]

交换后的结果为

[2 1 3 7 6 5 8 4]

第二次循环,更新间距为6÷1.3=4,比较2和6,1和5,3和8,7和4

[2 1 3 7 6 5 8 4]

[2 1 3 7 6 5 8 4]

[2 1 3 7 6 5 8 4]

[2 1 3 7 6 5 8 4]

只有7和4需要交换,交换后的结果为

[2 1 3 4 6 5 8 7]

第三次循环,更新距离为3,没有交换

第四次循环,更新距离为2,没有交换

第五次循环,更新距离为1,三处交换

[2 1 3 4 6 5 8 7]

[2 1 3 4 6 5 8 7]

[2 1 3 4 6 5 8 7]

三处交换后的结果为[1 2 3 4 5 6 7 8]

交换后排序结束,顺序输出即可得到[1 2 3 4 5 6 7 8]

经典排序算法(十四)--梳排序Comb Sort相关推荐

  1. 算法-22-字符串的排序算法(四种排序)

    目录 1.字符串 1.1.属性 1.2.字母表 2.字符串排序方法 3.键索引计数法 3.1.第一步:频率统计 3.2.第二步:将频率转换为索引 3.3.第三步:数据分类排序 3.4.第四步:回写排序 ...

  2. php主要算法设计,四种排序算法设计(PHP)

    标签 详细分析 /** * 四种排序算法设计(PHP) * * 1) 插入排序(Insertion Sort)的基本思想是: 每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子文件中的适当 ...

  3. Python编程基础:第五十四节 排序Sort

    第五十四节 排序Sort 前言 实践 前言 我们常需要对列表.元组中的元素进行排序,例如按照字母表排列学生的名称.这里就需要用到列表的sort()方法,以及sorted()函数. 实践 我们先来构建一 ...

  4. 排序算法——十大排序算法的图示与实现

    十大排序算法概览 比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序. 非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于 ...

  5. [ 数据结构 -- 手撕排序算法第四篇 ] 选择排序

    手撕排序算法系列之第四篇:选择排序. 从本篇文章开始,我会介绍并分析常见的几种排序,大致包括直接插入排序,冒泡排序,希尔排序,选择排序,堆排序,快速排序,归并排序等. 大家可以点击此链接阅读其他排序算 ...

  6. 排序算法 - 面试中的排序算法总结

    排序算法总结 查找和排序算法是算法的入门知识,其经典思想可以用于很多算法当中.因为其实现代码较短,应用较常见.所以在面试中经常会问到排序算法及其相关的问题.但万变不离其宗,只要熟悉了思想,灵活运用也不 ...

  7. Java常见排序算法之直接选择排序

    在学习算法的过程中,我们难免会接触很多和排序相关的算法.总而言之,对于任何编程人员来说,基本的排序算法是必须要掌握的. 从今天开始,我们将要进行基本的排序算法的讲解.Are you ready?Let ...

  8. 插入排序 php,PHP排序算法之直接插入排序(Straight Insertion Sort)实例分析

    本文实例讲述了PHP排序算法之直接插入排序(Straight Insertion Sort).分享给大家供大家参考,具体如下: 算法引入: 在这里我们依然使用<大话数据结构>里面的一个例子 ...

  9. 《数据结构与算法》实验:排序算法实验比较——选择排序 堆排序

    <数据结构与算法>实验和课程Github资源 <数据结构与算法>实验:线性结构及其应用--算术表达式求值 <数据结构与算法>实验:树型结构的建立与遍历 <数据 ...

  10. java 奇偶数据排序算法,简单讲解奇偶排序算法及在Java数组中的实现

    简单讲解奇偶排序算法及在Java数组中的实现 奇偶排序是一个比较有个性的排序,基本思路是奇数列排一趟序,偶数列排一趟序,再奇数排,再偶数排,直到全部有序 举例吧, 待排数组 [6 2 4 1 5 9] ...

最新文章

  1. CKEditor+CKFinder配置学习
  2. 团队项目的分工及绩效评估方法
  3. [Linux]结合awk删除hdfs指定日期前的数据
  4. 1065. 单身狗(25)
  5. oculus rift 开发(一)
  6. 【ACM】杭电1070:Milk
  7. 短视频追剧的末日来了?
  8. 一周信创舆情观察(8.30~9.5)
  9. C++ std::regex | 正则表达式
  10. 中山大学计算机软件专业,【广州日报】中山大学在珠海校区新成立人工智能学院和软件工程学院...
  11. dva处理_关于dva框架的二三事
  12. ps play android下载地址,PSPlay
  13. 走进VOT--《High Performance Visual Tracking with Siamese Region Proposal Network》阅读翻译
  14. html网页组织结构,使用HTML和CSS编码创建组织结构图
  15. 2口kvm切换器使用方法简述
  16. GALIL运动控制卡维修控制器维修DMC-1840
  17. [转]深入浅出WPF(7)——数据的绿色通道,Binding
  18. 中国社交网络行业市场前景广阔,ThinkSNS助力起航
  19. 前端使用CryptoJS加密解密
  20. 一个数异或同一个数两次,结果还是那个数

热门文章

  1. Http 请求处理流程[转]
  2. FckEditor 2.6.4升级手记
  3. Flutter 即学即用系列博客——06 超实用 Widget 集锦
  4. 启用Mac系统读写NFTS磁盘
  5. Linux 文本处理工具
  6. Java教程01.Java简介与环境配置
  7. [Bochs]Bochs调试技术
  8. 4.性能之巅 洞悉系统、企业与云计算 --- 观测工具
  9. 37. 重定向 21
  10. 6. URL (2)