数据结构笔记(排序-1)
查找排序
排序
前提
函数头有一个统一规范的格式
void X_Sort ( ElementType A[] ,int N )
X为排序算法的名称
*N为正整数
*只讨论基于比较的排序
*只讨论内部排序(假设内存空间充分大,所有的数据都可以一次性导到内存空间)
*稳定性:任意两个相等的数据,排序前后的相对位置不发生改变
没有一种排序是任何情况下都表现最好的。
冒泡排序
最好情况: 顺序T = O(N)
最坏情况: 逆序T = O (N2)
插入排序
最好情况:顺序T = O(N)
最坏情况:逆序T = O(N2)
稳定的
逆序对
对于下标 i < j ,如果A[i] > A[j],则称(i,j)是一对逆序对(inversion)
交换两个相邻元素正好消去一个逆序对
插入排序:T(N,I) = O(N+I)
N元素的个数,逆序对的个数
如果序列基本有序,则插入排序简单且高效
定理:任意N个不同元素组成的序列平均具有N(N-1)/4个逆序对。
定理:任何仅以交换相邻两元素的来排序的算法,其平均时间复杂度为Ω(N2)。
要提高算法效率,我们必须:
每次消去不止一个逆序对
每次交换相隔较远的2个元素。
希尔排序
希尔排序(Shell’s Sort)是插入排序的一种又称“缩小增量排序”(Diminishing Increment Sort),是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。该方法因D.L.Shell于1959年提出而得名。
希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止。
增量为1时就是前面讲的直接插入排序。
算法
__EOF__

本文作者:坤舆小菜鸡
本文链接:https://www.cnblogs.com/HBU-xuhaiyang/p/12520629.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/HBU-xuhaiyang/p/12520629.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~