数据结构和算法--排序算法

数据结构和算法是一种思想,理解了思想就是忘记了代码也能找回原来的记忆。

 

 

插入排序:将N插入到已经排好序的数组中,时间复杂度为O(N^2)。例如将3和6插入到{1、2、4}中,数组的变化依次为{1、2、3、4}和{1、2、3、4、6}。

希尔排序:希尔排序(Shell Sort)也是插入排序的一种。也称为缩小增量排序,是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。是将R[1]和R[1+d]比较,如果不符合升序(或降序)就交换,然后减小d的值(一般为d=d/2)继续比较,一直到d等于1为止。时间复杂度为O(N^1.5)。

堆排序:是基于二叉堆实现的,将待排序序列构造成一个大顶堆,此时,整个序列的最大值就是堆顶的根节点。将其与末尾元素进行交换,此时末尾就为最大值。然后将剩余n-1个元素重新构造成一个堆,这样会得到n个元素的次小值。如此反复执行,便能得到一个有序序列了。时间复杂度为O(NlogN)。

归并排序:其操作是合并两个已经排序好的表,主要方法是使用递归。递归到最小距离(相邻)的时候开始比较并排序,然后递归返回将已经排好的两组子表合并,依次递归返回得到最终的结果。时间复杂度O(NlogN)

快速排序:使用递归,主要操作是在表中拿出一个数,将比它小的放到其前边,将比它大的放到其后边,然后将前后边的子表依次按照这个规则递归。时间复杂度为O(NlogN)。

冒泡排序:利用双层循环依次比较,两两相比将比较大的数不断的移到后边,也就是把小的数不断的往前冒。时间复杂度为O(N^2)。

选择排序在表中找到最小的数放到表的最前边,然后找次小的数放到第二的位置,依次寻找直到结束。时间复杂度为O(N^2)。

计数排序计数排序的核心在于将输入的数据值转化为键存储在额外开辟的数组空间中。 作为一种线性时间复杂度的排序,计数排序要求输入的数据必须是有确定范围的整数。

桶排序:桶排序是计数排序的升级版。它利用了函数的映射关系,高效与否的关键就在于这个映射函数的确定。

基数排序:对每一位进行排序,从最低位开始排序,复杂度为O(kn),为数组长度,k为数组中的数的最大的位数;基数排序是按照低位先排序,然后收集;再按照高位排序,然后再收集;依次类推,直到最高位。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值