12.排序(上)

测一下能不能跑通

看一下冒泡,插入排序还挺强的,任何排序先写单趟再写多趟不容易错

如果每个前一个比后一个小那么没发生交换,不需要冒泡了,这是最好的O(N),flag等于0就是已经有序

冒泡排序和插入排序时间复杂度都是n方,是一样的

free(a7)

我们都是N方但是我们有差别,时间复杂度只是一个底线,冒泡排序最坏非常容易达成帽几个就要交换,最好情况不容易,而插入排序从第一个挪动一次,最后一个挪动n-1次 ,运气不好所有都要往后挪,但是这种概率非常小。

插入排序如果逆序效率就下来了,有没有法避免这个

假设gap组间隔为三分一组,再取后一个位置数据,间隔是多少就分成几组,每一组进行插入排序

9看成有序5往前插入5.9换,8往5.9插入8比9小,9往后挪

5再往前

红色这一组就有序了,再对绿色搞,紫色

大的数都往后,小的数都接近前面了 ,更接近有序了,进行插入排序更快,gap越大,几次大的就到后面了,跳得越快,预排须想让大的到后,插入排序就更快了

先排红色

这种情况i取下一个就越界了

gap等于1右边就是直接插入排序。三组:i=0排红 1绿

end等于n-gap tmp就越界了,所以end都小于n-gap上面是一组一组来优化一下多组并着走:

效率没区别,两层好

相关推荐
董董灿是个攻城狮11 小时前
AI视觉连载8:传统 CV 之边缘检测
算法
AI软著研究员18 小时前
程序员必看:软著不是“面子工程”,是代码的“法律保险”
算法
FunnySaltyFish18 小时前
什么?Compose 把 GapBuffer 换成了 LinkBuffer?
算法·kotlin·android jetpack
颜酱19 小时前
理解二叉树最近公共祖先(LCA):从基础到变种解析
javascript·后端·算法
地平线开发者1 天前
SparseDrive 模型导出与性能优化实战
算法·自动驾驶
董董灿是个攻城狮1 天前
大模型连载2:初步认识 tokenizer 的过程
算法
地平线开发者1 天前
地平线 VP 接口工程实践(一):hbVPRoiResize 接口功能、使用约束与典型问题总结
算法·自动驾驶
罗西的思考1 天前
AI Agent框架探秘:拆解 OpenHands(10)--- Runtime
人工智能·算法·机器学习
HXhlx2 天前
CART决策树基本原理
算法·机器学习
Wect2 天前
LeetCode 210. 课程表 II 题解:Kahn算法+DFS 双解法精讲
前端·算法·typescript