常用的排序算法-快速记忆

一、冒泡排序-------循环n-1趟,每趟选一个相对最大的

最简单的排序,

 

冒泡排序,冒泡排序是循环N-1趟 ,从i=0开始,每趟从左到右,从j=0开始,比较N-1-i次,依次比较相邻索引对应的两数,左比右大则交换值,否则不变。这样趟i都能拿到一个最大值,即I-1个最大值,最后一个最小值不用比。排序结束。(优化点:如果某躺未交换,说明已正序,可终止)。

那么最好的情况就是序列本身就是升序的,一趟下来比较了n-1次不需要交换结束排序,时间复杂度为O(n);

最坏的情况序列本身降序,那么第一次就需要交换n-1次,第二次排序需要交换n-2次,最后一共需要交换(n-1)+(n-2)+(n-3)+….+1= n(n-1)/2,所以时间复杂度为O(n^2)。故时间复杂度为O(n)~O(n^2)。平均复杂度为O(n^2)。

 

 

二、选择排序

 

 

三、插入排序

N-1轮排序,

 

 

四、希尔排序

又称缩小增量排序,是一种优化后的高效的插入排序。目前看来,希尔的核心最后出来的并不是绝对有序的,是宏观排序,如果用希尔之后,再用一次插入排序,也能很高效的绝对排序。

原理:

比如,先2个为一组,数组的增量索引=N/2,N(奇数为N+1)个组,每组内的2个数进行一次小范围内的插入排序(需要换则其索引自然交换了)。第一轮的每组做完之后。

开始第二轮,增量索引变成N/2/2,N。。。再来一轮内部比较。

最后增量索引变成1,形成了只有一组,那希尔排序结束,得到一个大概的宏观排序结果,还需要做一次插入排序。

 

 

五、快速排序-------快是比冒泡快,原因是拿一个随机数拆成两份,递归此操作

随机,或就第一数X,先拿去和所有数做一趟比较排序后,把比X小的放左边,大的放右边。(核心就是这行)

然后再对两边的数分别就行如此递归快速排序。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

java_爱吃肉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值