数据结构 ---- 第七章 排序

框架

排序

基本概念内部排序外部排序
稳定性衡量标准插入排序交换排序选择排序归并排序基数排序多路归并排序
 时空复杂度直接插入排序折半插入排序希尔排序冒泡排序快速排序简单选择排序堆排序   

 

各种内部排序算法的比较

 插入排序交换排序选择排序  
排序方法直接插入排序折半插入排序希尔排序冒泡排序快速排序简单选择排序堆排序归并排序基数排序
时间复杂度O(n^{2})O(n^{2})O(n^{1.3}~n^{2})O(n^{2})O(nlog_{2}n)O(n^{2})O(nlog_{2}n)O(nlog_{2}nO(d(n+r))
空间复杂度O(1)O(1)O(1)O(1)

O(1)

递归栈最差O(n)

O(1)O(1)O(n)

O(r)

r个队列

 

稳定性稳定稳定不稳定稳定不稳定不稳定不稳定稳定稳定
简述

①在L[1,...,i-1]中找到L[i]的插入位置k

②将L[k,...,i-1]中的元素全部后移一个位置

③将L[i]复制到L[k]

①二分法找到L[i]在L[1,...,i-1]中的插入位置k

②将L[k,...,i-1]中的元素全部后移一个位置

③将L[i]复制到L[k]

将待排序表分割为L[i,i+d,...,i+kd]的特殊子表,分别进行插入排序,当表中元素已基本有序时,再对全体记录进行一次直接插入排序。

d1=n/2;d_[i+1]=\left \lfloor di/2 \right \rfloor

从后往前,两两比较,交换取一个元素做为基准,将大于,小于它的分为二部分递归第i次选[i,n]中最小元素放到i位置大根堆(根大于儿子,从下往上,右往左,儿子较大者>当前结点,交换这两个的值,),小根堆(反之)将两个或两个以上的有序表组合成一个新的有序表

(特别:不基于比较进行排序)(多关键字排序思想)

按关键字d优先级->优先级高 排d次

(利用其稳定性。)

外部排序

概念:文件记录庞大,内存一次放不下时,需要将待排序的记录存储在外存上,排序时再把数据一部分一部分的调入内存。排完序后放到原文件。

常用方法:归并排序

败者树:除根节点存最小值(即最后胜利者)外,其他非叶结点均存放  左右子树的胜者  中的败者。

例:

多路平衡归并排序(这块不难,拿书看看,熟悉一下流程就可以了。)

1、置换-选择排序(生成初始归并段)

2、最佳归并树(多趟归并排序)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值