王道计算机考研数据结构—学习笔记Chapter Ten排序算法Sort

排序(Sort):排序是将各元素按关键字递增或递减顺序重新排列。排序算法分为内部排序(数据都在内存中)和外部排序(数据太多,无法全部放入内存)。

排序算法的评价指标:时间复杂度、空间复杂度、算法的稳定性。

算法的稳定性:关键字相同的元素在排序之后相对位置是否会发生改变。

10.1插入排序

插入排序的算法思想:每次将一个待排序的记录按其关键字大小插入到前面已排好序的子序列中,直到全部记录插入完成。插入排序分为直接插入排序和折半插入排序。直接插入排序是顺序查找找到插入的位置,适用于顺序表、链表。折半插入排序是折半查找找到应插入的位置,仅适用于顺序表。

算法效率分析:
空间复杂度: 0(1)
最好时间复杂度(原本有序) : O(n)
最坏时间复杂度(原本逆序) : O(n的2次方)
平均时间复杂度( O(n的2次方)
算法稳定性:稳定

10.2希尔排序

算法思想:适用于顺序表。

算法效率分析:
空间复杂度: 0(1)
时间复杂度:未知,但优于直接插入排序
算法稳定性:不稳定

10.3冒泡排序

冒泡排序算法思想:从后往前或从前往后两两比较相邻元素的值,若为逆序则交换它们,直到序列比较完,称这样过程为“一趟”冒泡排序。最多只需要n-1趟排序。每一趟排序都可以使一个元素的移动到最终位置,已经确定最终位置的元素在之后的处理中无需再对比。如果某一趟排序过程中未发生交换则算法可提前结束。适用于顺序表和链表。

算法性能分析:
空间复杂度O(1)
最好时间复杂度(有序)O(n)
最坏时间复杂度(逆序)O(n的平方)
平均时间复杂度O(n的平方)
稳定性:稳定。

10.4快速排序

算法思想:

算法性能分析:
最好空间复杂度O(n)
最坏空间复杂度O(logn)
最好时间复杂度O(n的平方)每次划分很平均
最坏时间复杂度O(nlogn) 原本逆或正序
平均时间复杂度O(nlogn)
稳定性:不稳定

10.5简单选择排序

算法思想:适用于顺序表和链表。

算法性能分析:
空间复杂度O(1)
时间复杂度O(n的平方)
稳定性:不稳定。

10.6堆排序

算法思想:

算法性能分析:
空间复杂度O(1)
时间复杂度O(nlog平方n)
稳定性:不稳定。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值