✨✨这些 排序算法都是指的 需要进行比较的排序算法
✨✨下面都是略微讲解一下思路,如果需要详细了解哪一个排序,点击👉链接即可
✨✨对于时间、空间复杂度、稳定性,希望你🧑🎓能够理解记忆🧑🎓而不是背表格
目录
4、堆排序:【排序算法】堆排序(Heapsort)-优快云博客
一、稳定性定义:
排序算法的稳定性指的是在排序过程中,相等的元素在排序后保持它们原有的相对顺序。也就是说,如果两个元素在原始未排序的序列中是相等的,并且其中一个在另一个之前,那么在排序后的序列中,这个顺序依然保持不变。
当然使用可能对我们来说不够明显,但是在实践中,在对结构体进行排序非常有意义
✨👉 假设我们要按总分进行排名,但是如果总分相同的情况,按照数学成绩高的排前头,这个时候,我们先按照数学成绩排好序,相当于第一名是张三,那么按照总分拍好后,张三还是排在李四的前面,从这个表来看,第一是张三,第二是李四,第三是小翔,这就是稳定性,总分相同的情况下,张三还是在李四的前面
二、各个排序:
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