数据结构常用算法学习一

近来开始学习数据结构和算法,为工作第一步做准备,先把这两天看的排序按照自己理解来写一下。
(都是从小到大排序)

冒泡排序

从数组第一个元素x开始,与接下来的每一个元素进行比较,比x小的元素则与x交换位置,比x大则位置不变,直到比较完毕,则开始比较数组第二个元素。冒泡排序是一种稳定的排序算法
时间复杂度:
最好情况:数组开始时便是正序排列:O(n)
最坏:O(n^2)
平均:O(n^2)

选择排序

依次从数组中,按从小到大的顺序选取元素,最小的与数组第一个元素进行交换,然后第二小的和第二个元素进行交换,以此类推,选择排序是一种不稳定的排序算法
时间复杂度:
最好情况:O(n^2)
最坏:O(n^2)
平均:O(n^2)

直接插入排序

将数组元素插入到另一个已排序好的数组当中,在这里可以将数组第一个元素(如a[0])设计为一个哨兵值,每次需要插入的新元素赋值给哨兵值,这样每次就只需要将哨兵值进行比较即可,不用额外开辟数组空间,只需要一个哨兵值的附加空间即可。直接插入排序是一种稳定的排序算法
最好情况:O(n)
最坏:O(n^2)
平均:O(n^2)

快速排序

思想就是取出一个数,然后将比这个数小的放这个数前面,比这个数大的放后面,然后再对前半部分和后半部分分别再用此方法,直到排序成功。快速排序是一种不稳定的算法
最好情况:O(nlogn)
最坏:O(n^2)
平均:O(nlogn)

二分法插入排序

将待排序元素插入一个已排序好的数组,从中间位置开始比较,然后继续采用二分法进行排序插入。二分法插入排序是一种稳定排序算法。
最好情况:O(log₂n)
最坏:O(n^2)
平均:O(n^2)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值