【数据结构】第八章 排序 图解+思维导图+源代码(详细易懂)快排、冒泡、堆排、归并、基数、递归、希尔、计数

目录

一、插入排序

1.直接插入排序

​编辑

2.二分法插入排序(利用已排序列有序性)

​编辑

3.表插入排序(减少移动次数)

​编辑

4.shell希尔 排序(缩小增量排序)

 二、选择排序 

1.直接选择排序(效率<直接插入排序)

2.堆排序(高效,适合n值大)

 三、交换排序

 1.起泡排序

​编辑

2.快速排序/分区交换排序

四、分配排序/基数排序

五、归并排序(适合外存顺序访问效率高、随机访问效率低)

1.二路归并排序


一、插入排序

1.直接插入排序

2.二分法插入排序利用已排序列有序性

3.表插入排序减少移动次数

 插入记录Ri时,R0Ri-1已排好序

 先将Ri脱链, 采用顺序比较的方法找到Ri应插入的位置,将Ri插入链表


4.shell希尔 排序(缩小增量排序)

序列->间距d的元素构成的d 个“子序列”

反复

每个子序列内部分别排序

缩小d之后重复①直到d缩小为1 时再做一次排序

(即对整个序列排序)


 二、选择排序 

从空排序序列开始, 每次 从未排序 记录 中选 排序码最小 的记录,与未排序段的 第一个 记录 交换,直到所有记录排好序

1.直接选择排序(效率<直接插入排序)

直接选择排序效率较低,第i 趟排序需要作 n- i 次比较,没有利用已做的比较结果

2.堆排序高效,适合n值大

 不同分支中有排序码相同的结点,算法没法保证它们在最终排序序列里的位置关系

 三、交换排序

依次比较 相邻数据项 ,若某两项 次序颠倒 逆序 ),则交换它们

 1.起泡排序

2.快速排序/分区交换排序

所有 大于 R 0 的记录移到 R 0 右边 , 所有 小于 R 0 的记录移到 R 0 左边
递归 地分别对两组记录采用同样方式排序,直至划分到 每个 子部分 只包含 一个 记录

四、分配排序/基数排序

将所有待比较数字统一为统一位数长度,接着从最低位开始,依次进行排序。

  • 按照位数进行排序。
  • 按照十位数进行排序。
  • 按照百位数进行排序。

 

五、归并排序适合外存顺序访问效率高、随机访问效率低

把待排序的文件分成若干个子文件,先将每个子文件内的记录排序,再将已排序的子文件合并,逐步得到完全排序的文件

1.二路归并排序

速度较快 :Shell排序、堆排序、快速排序、归并排序

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值