8种排序基本概念

冒泡排序:
&bsp;从头开始,两两依次比较,直到找出这组数据中最大的,放在最后面,重复此过程,直到有序
时间复杂度:o(n^2)
空间复杂度:o(1)
稳定性:稳定
优点:简单,易实现,不需要额外空间
缺点: `效率低

选择排序:
从头开始,依次找最小的,放在第一个,直到有序
时间复杂度:o(n^2)
空间复杂度:o(1)
稳定性:不稳定
优点:表现最稳定,时间复杂度永远o(n^2),不需要额外空间
缺点:稳定性上讲,不稳定,效率低

插入排序:
从头开始,不断地将当前数据插入到之前排好的数据中,直到最后一个
时间复杂度:o(n^2)
空间复杂度:o(1)
稳定性:稳定
优点:效率略高于选择和冒泡,稳定
缺点:效率不高

希尔排序:
将一组数据分成若干组,每个组中第一个元素与第二个元素相差“增量”个元素,对每个组进行插入排序,然后逐渐减小增量,分小组,直到增量为1(只有一个组)。
时间复杂度:o(nlogn)
空间复杂度:o(1)
稳定性:不稳定
优点:效率高于三种简单排序,不需要额外空间
缺点:不稳定

快速排序:
从一组数据中找出一个基准,然后从后向前找比这个基准小的,放在基准位置,然后再从前向后找比基准大的,放在刚刚那个数字的位置,循环此过程,直到基准找到合适的位置,使基准前面的数字小于基准,基准后面的数字大于基准。接着换一个基准重复此方法,直到数列有序。
时间复杂度:o(nlogn)
空间复杂度:o(logn)
稳定性:不稳定
优点:排序速度最快

归并排序:(二路归并排序)
将一个长度为n的数列,两两分组,组的个数>=2,对每个组内排序;再将两个组合并,排序,合并,排序,直到整个数列有序。
时间复杂度:o(nlogn)
空间复杂度:o(n)
稳定性:稳定

堆排序:
大顶堆:每个节点的值都大于其左右孩子
将一组数维护成大顶堆,找出堆顶元素拿走(交换堆顶元素和堆底元素,堆的元素个数减一),重新维护成一个大顶堆,重复操作,直到数列有序
时间复杂度:o(nlogn)
空间复杂度:o(n)
稳定性:不稳定

基数排序:
将一组数按个位元素分别放到0~9(十个桶)中,然后按十个桶的顺序取出(先去0号桶,再取1号桶…),然后按十位元素分十个桶,将数字按十位元素再次放入,再次取出,直到数列有序。
时间复杂度:o(n*k) k:桶的个数
空间复杂度:o(n+k)
稳定性:稳定
缺点:不能对小数排序,只针对整数

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值