排序算法相关的时间复杂度和进程稳定性,快排的原理(上)

本文详细介绍了排序算法的时间复杂度和稳定性,包括插入排序、希尔排序、冒泡排序及其改进、下沉排序和快速排序的工作原理。快速排序采用"挖坑填数+分治法",通过不断分割数据并进行内部递归实现排序。通过对不同排序算法的理解,有助于优化和选择适合的排序方法。
摘要由CSDN通过智能技术生成

排序图表:
在这里插入图片描述
有序的变化是矢量变化(矢量变化存在正负):(内部有序的部分+某个增量元素(同趋势))整体为具有同样有序趋势的新的有序部分。
一、插入排序(逐个插入)(基底空容器)
每次将某个待排序的数据,跟前面已经有序的序列数字一一比较找到自己合适的位置,插入到序列中,直到全部数据插入完成。
二、希尔排序(跳跃式插入)(基底空容器)
先将整个待排序的元素序列分割成若干个小规模子序列组(由相隔某个“增量”元素组成),在单个的小规模子序列组内分别进行直接插入排序,然后依次缩减分界增量元素再进行下一轮排序轮回,待整个待排序的元素序列中的全部元素基本上有序(分界增量元素数目足够少)时,再对全体元素进行一次最后的直接插入排序。由于希尔排序是对相隔了若干距离的小部分数据进行内部直接插入式排序,因此形象的称希尔排序为“跳着插”
三、冒泡排序(基底充满元素的容器)
冒泡排序:小数据上冒(升序)/大数据上冒(降序)
对两个相邻的数据进行比较并采取小数据上冒(升序)(前位置)/大数据上冒(降序)(前位置)。小数据上冒每次遍历后最小的数据浮在当前序列最上面/大数据上冒每次遍历后最大的数据浮在当前序列最上面,重复N轮遍历后即可以使数组序列有序。
冒泡排序改进1:
在某一轮的冒泡遍历进程中如果没有发生相邻数据的交换行为,则说明整个数据序列组已经有序且满足所期望的顺序,可以结束循环遍历。通过设置每一轮遍历交换行为操作次数统计计数count标志位来记录此轮遍历进程中有无数据交换动作可以判断是否要继续执行下一轮遍历循环。
冒泡排序改进2:记录下某次遍

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HaiJunYa

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值