【排序算法】总结篇

✨✨这些 排序算法都是指的 需要进行比较的排序算法

✨✨下面都是略微讲解一下思路,如果需要详细了解哪一个排序,点击👉链接即可

✨✨对于时间、空间复杂度、稳定性,希望你🧑‍🎓能够理解记忆🧑‍🎓而不是背表格

目录

一、稳定性定义:

 二、各个排序:

 1、直接插入排序:【排序算法】插入排序-优快云博客

2、希尔排序:【排序算法】希尔排序-优快云博客

3、选择排序:【排序算法】选择排序-优快云博客

4、堆排序:【排序算法】堆排序(Heapsort)-优快云博客

5、冒泡排序:【排序算法】冒泡排序-优快云博客

6、快速排序:【排序算法】快速排序-优快云博客

7、归并排序:【排序算法】归并排序-优快云博客

三、性能比较:

Sort.h

Sort.c

 test.c

四、总结:​编辑


一、稳定性定义:

        排序算法的稳定性指的是在排序过程中,相等的元素排序后保持它们原有的相对顺序。也就是说,如果两个元素在原始未排序的序列中是相等的,并且其中一个在另一个之前,那么在排序后的序列中,这个顺序依然保持不变。

当然使用可能对我们来说不够明显,但是在实践中,在对结构体进行排序非常有意义

✨👉 假设我们要按总分进行排名,但是如果总分相同的情况按照数学成绩高的排前头,这个时候,我们先按照数学成绩排好序,相当于第一名是张三,那么按照总分拍好后,张三还是排在李四的前面,从这个表来看,第一是张三,第二是李四,第三是小翔,这就是稳定性,总分相同的情况下,张三还是在李四的前面

 二、各个排序:

 1、直接插入排序:【排序算法】插入排序-优快云博客

✨直接插入排序的思想:前一个数有序,我拿这一个数和你比,如果比你小,前一个数往后移动。相当于插扑克牌,那么前一个和我手上的牌相等的话,不会取挪前一张牌。

所以》》 稳定性:稳定

时间复杂度:O(N^2)

空间复杂度:O(1)

稳定性:稳定

2、希尔排序:【排序算法】希尔排序-优快云博客

✨希尔的思想是分gap组,对每个组都进行插入排序,然后gap会不断变小,当到1时进行直接插入排序,那么想想场景:👉👉相同的元素在预排序的时候如果被分到不同的组,顺序也可能被打断,那么就是不稳定,因为预排序无法控制,所以直接认为不稳定🧑‍🎓

时间复杂度:O(N^1.3)

空间复杂度:O(1)

稳定性:不稳定

3、选择排序:【排序算法】选择排序-优快云博客

✨在数组里面选小的数,选到小的就更新一下,相同的不更新,然后继续找,直到遍历结束,把最小的放到左边🤔看着好像是稳定的,真是一回事,但是我们只是注意了小的耶🐸,忘记了我们在,在第一个位置的数的情况,如下:我的5和原来的5相对顺序是不是就已经发生改变了🤔记住这个例子它是不稳定的

时间复杂度:O(N^2)

空间复杂度:O(1)

稳定性:不稳定

4、堆排序:【排序算法】堆排序(Heapsort)-优快云博客

✨思想:向下调整建堆,建好堆后,将尾元素和栈顶元素交换,交换以后,重现堆n-1个元素的堆进行调整;比如:全是2的大堆,将2取出来,全乱了,乱套了

时间复杂度:O(N*logN)

空间复杂度:O(1)

稳定性:不稳定

5、冒泡排序:【排序算法】冒泡排序-优快云博客

✨思想:前一个和后一个比较,大于后一个就交换,相等的s;》》》稳定的

时间复杂度:O(N^2)

空间复杂度:O(1)

稳定性:稳定

6、快速排序:【排序算法】快速排序-优快云博客

✨思想:找比kyi小的和比kyi大的,小的放前半部分,大的放到后半部分,最后ky

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值