数据结构与算法--排序

概念:根据关键字大小将无序的若干条记录调整为有序的序列
类别
- (不)稳定排序
- (外部)内部排序
- (基数)基于比较排序
相关:关键字、时空复杂度、(降)升序

插入排序
直接插入排序:第p趟排序是将第p+1个元素插入到前面p个元素的有序表中(1<=p<=n-1)
直接插入排序
折半插入排序:由于前p个元素是有序的,可以用二分法确定第p+1个元素的插入位置
希尔排序:增量大小等于子序列数目,增量递减,对每个子序列进行直接插入排序
希尔排序

比较排序
冒泡排序:不断比较相邻两个元素并交换使大(小)的元素始终在上面
冒泡排序
快速排序
• 定义:轴元素分割(左边元素小于轴元素,右边元素大于轴元素,这里选择序列的第一个元素作为轴元素,若选择其他的,可以先把它与第一个元素交换),递归分治(对左边和右边元素分别进行快速排序)
• 分割策略:
○ right指向序列最右(向左搜索,交换),left指向序列最左(向右搜索,交换),left=right结束,轴元素放在left
○ right指向序列最右,left指向序列最左,left和right相向搜索并交换,left>right结束,轴元素放在right
时空复杂度分析
快速排序

选择排序
简单选择排序:第p趟排序是将关键字第p小(大)的元素与第p个元素交换(1<=p<=n-1)
简单选择排序
堆排序:利用堆选出序列的最大(小)值并放在堆尾,堆减小(堆只包含待排序的元素)
堆排序
归并排序:”等分”分解,排序(单个元素肯定有序)归并
归并排序
判定树:每次比较作为结点,左分支满足比较条件,右分支不满足,叶子结点表示排序结果
判定树

基数排序(单关键字拆分成多关键字,不同优先级,分配收集)
• 分类:
高位优先法(MSDF,优先级高的关键字先排)
○ 低位优先法(LSDF,优先级低低关键字先排)
• 实现(r是关键字属性值个数的最大值,n是记录个数):
○ 定长数组(空间开销r*n)
○ 链式队列(空间开销r+n)
基数排序

各种排序算法性能比较
各种排序算法性能比较

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值