三大查找八大排序

排序

一、选择排序

原理:在N-i+1个记录中找到最小的那个值的位置,然后与i位置的值进行交换。

时间复杂度分析:由于到第I个数前都是有序的,所以比较的次数是:n-1+n-2+。。。+1=n*(n-1)/2,交换的次数最多是n-1次,因此时间复杂度为比较次数和交换次数的总和0(n2);


二、冒泡排序

原理:从数组最后一个值开始,比较N-i次,每次是两两比较相邻的值,若序号大的值比序号小的值小,则交换。

时间复杂度分析:每次都要比较N-i次,当整个数组是逆序时,每次都要交换,则时间复杂度为2*n*(n-1)/2=O(n2)



三、直接插入排序

原理:在一个数组中,默认第一个数值是有序的,以后的数都是在有序数组中正确的位置插入,当找到这个正确的位置时,这个位置后的数都要后移一个位置。

时间复杂度分析:最好的时候是整个数组是有序的,此时只要循环一次数组就可以了,O(n),最坏的情况是反序,每次都要将有序数组后移,(i+1)求和,O(n2)


四、希尔排序

原理:将数组分成几个小序列进行直接插入排序,设一个增量,直至增量等于1的时候,停止算法。

时间复杂度:最好o(n3/2),最坏,O(n2)


五、快速排序

原理:



查找

一、无序查找

原理:在头结点设置哨兵,当查找完一轮数组后,若找不到则返回0下表

时间复杂度分析:减少了比较的次数,不用判断下标是否越界了。


二、有序查找

1、折半查找

原理:每次都从一段数组中间比较。

时间复杂度分析:最好的时候是一次,最坏的时候是二叉树的深度[log(2)n}+1,

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值