基本排序算法

在这里插入图片描述

1、选择排序


选择排序就是每次都要遍历一遍,把最小值放到最开始的位置,因此它的时间复杂度为o(n^2),即便一开始是顺序的排序,它的时间复杂度也这么高,空间复杂度为o(1),是不稳定排序。

2、插入排序


(1)插入排序是先默认第一个元素是有序的,然后让第二个元素和有序序列从尾到头比较,如果该元素小于有序序列的元素,那么有序序列的元素就得挨个往后移,再把该元素插进去。
(2)如果该序列是有序的,那么时间复杂度为o(n),最坏情况就是倒叙,那么时间复杂度为o(n2),平均也得o(n2)。

3、希尔排序


(1)希尔排序他是插入排序的一种升级,插入排序它是和挨着的相比较,而希尔排序它可以和距离较远的元素比较。
(2)希尔排序,它主要有个增量序列,增量gap = length/2,然后下一次gap = gap/2,这样逐渐缩小,到最后排序完毕。
在这里插入图片描述
(1)第一趟分为了5组,每个组内进行插入排序,也就是这5组拍好序了,然后第二题分为了2组,每次间隔2个得到了2个长度为5的序列,然后对组内的5个元素进行插入排序,这样增量序列就是1了,也就是再对全部序列进行插入排序,得到最终的序列。
(2)它有极端的情况就是,比如第一次分5组,每组2个,这两个是有序的,每组都是这个情况,但是整体情况却不是有序的,这样希尔增量排序的操作反而白白增加工作量。
(3)并且希尔排序也不是稳定的排序。最差的时间复杂度为o(n2).

在这里插入图片描述

4、归并排序


(1)归并排序就是先把一个序列从中间分为2段
(2)然后对这两段序列分别进行归并,两个排序,然后在两组进行排序。
(3)然后对排好序的两组进行排序。
最好的时间复杂度为o(n),平均是o(nlogn)。它就是一个二叉树一样,一组一组的往上升,到达最好就是排好序的数组。以空间换时间,空间复杂度是o(n)。
(4)它是稳定的排序,因为它每次的排序都是和相邻的数据进行比较,变动不大,不会出现同样的值调动。

5、快速排序


(1)快速排序就是首先选取一个基准值,可以是开头,也可以是中间位置得数,然后用l,r两个指针分别从开头向右移找到比基准值大的,然后r从末尾向前找到比基准值小的,它两互相交换,然后l,r继续移动,直到l,r重合,就把基准值放到这里,这也是进行一次排序就会得到一个最终的位置。
(2)基准值就找到了最终的位置,然后把基准值左边和右边的序列,再进行一次这样的排序,一次递归就得到了最终的排好序的序列。
(3)时间复杂度为o(nlogn),最坏时间复杂度为o(n2)。
因为它每次基本是让中值来做基准值,也就是把序列分成差不多相等的2列,然后再继续递归下去,这样递归树的高度也就是o(logn)。

6、冒泡排序


(1)冒泡排序的话就是,比如升序的话,就从头到尾开始遍历,相挨着的两个元素相比较,大的就换到右边,这样每次比较,都会确定一个元素的位置到最大值。
(2)就像冒泡泡一样,冒到最上面,最小时间复杂度为o(n),就是遍历了一遍,什么都不用变,最坏为o(n2),平均o(n2)。

7、堆排序

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值