网站设计与规划论文网站开发详细报价

张小明 2026/1/11 9:37:26
网站设计与规划论文,网站开发详细报价,yy直播间,软广告经典案例希尔排序介绍希尔排序由希尔发明#xff0c;当一个序列的无序程度较低时#xff0c;那么使用插入排序的效率就会很快#xff0c;希尔排序的核心思想就是#xff0c;通过逐步缩小增量(步长)来逐步把一开始很无序的序列慢慢变得有序#xff0c;最后当增量为1时#xff0c;就…希尔排序介绍希尔排序由希尔发明当一个序列的无序程度较低时那么使用插入排序的效率就会很快希尔排序的核心思想就是通过逐步缩小增量(步长)来逐步把一开始很无序的序列慢慢变得有序最后当增量为1时就是一次典型的插入排序。实现typedef int ElementType; void ShellSort(ElementType A[], int N) { int i,j,Increment; ElementType tmp; for (IncrementN/2; Increment0; Increment/2) { for (iIncrement; iN; i) { tmp A[i]; for (ji; jIncrement; j-Increment) { if (tmp A[j-Increment]) { A[j] A[j-Increment]; }else { break; } } A[j] tmp; } } }假如有一个元素数量为11的乱序序列那么就可以得到11/255/222/11这三个增量。对序列进行增量为5的插入排序分别获得下标为(50),(61),(72),(83),(94),(10,5)这六组下标的跳跃步长为5的序列然后分别对这六组序列进行插入排序排完序后的整个数列的有序程度就会升高一些这样就可以提高之后进行直接插入排序的效率了。接着进行增量为2的插入排序分别获得下标为(2,0),(3,1),(4,2,0),(5,3,1),(6,4,2,0),(7,5,3,1),(8,6,4,2,0),(9,7,5,3,1),(10,8,6,4,2,0)这九组下标的跳跃步长为2的序列再分别对这九组序列进行插入排序排序完后整个序列的有序程度就很高了。看似这一轮的比较次数很多但其实还有个break语句其表示若第一次比较不交换时那就不进行后续的比较了例如(420)若下标为4和2的不需要交换那说明下标为420的就已经是有序了不需要再对20进行比较了。若下标为42的进行交换了那还得继续比较下标为4和0的元素。算法中第一个for循环得到增量矩阵第二个for循环获得各个分序列中的首元素的下标第三个for循环对各个分序列进行插入排序。分析希尔排序是不稳定排序其会把不同步长的分序列进行排序当相同元素被分到不同分序列中时可能会改变它们的相对位置。不同步长序列的时间复杂度不一样若为n/2n/4....1的步长的话那最坏的时间复杂度为O().若用Hibbard步长序列(-1),那时间复杂度为O().若用Sedgewick步长序列(混合序列9×-9×1和-3×1),那最坏的情况下时间复杂度被优化成O()了。堆排序介绍在之前的文章中介绍了堆这一数据结构得益于堆的特性其根节点始终是最大值(或最小值)我们可以不停的取堆的根节点元素然后按顺序排好这样就可以得到排好序的序列了。实现typedef int ElementType; #define LeftChild(i) (2*(i)1) void Swap(ElementType *a, ElementType *b) { ElementType temp *a; *a *b; *b temp; } void PercDown(ElementType A[],int i,int N) { int Child; ElementType Tmp; for (Tmp A[i];LeftChild(i)N;iChild) { Child LeftChild(i); if (Child!N-1 A[Child1]A[Child]) { Child; } if (TmpA[Child]) { A[i] A[Child]; }else { break; } } A[i] Tmp; } void HeapSort(ElementType A[],int N) { int i; for (iN/2;i0;i--) { PercDown(A,i,N); } for (iN-1;i0;i--) { Swap(A[0],A[i]); PercDown(A,0,i); } }得益于堆对应完全二叉树父子节点位置的数学关系我们可以通过对原始无序序列进行下滤操作从而将其转化成符合堆结构的数组。此时这个数组的第一个元素是整个序列的最大值把它和最后的元素进行交换这样整个序列中我们完成了最大元素的归位。然后在把除最后元素的其他所有元素进行下滤操作重新形成新堆再把第一个元素放到倒数第二个位置上这样就完成了第二个最大元素的归位循环往复就以从大到小的顺序完成了排序操作。分析堆排序是不稳定的当把栈顶元素和最后有个元素进行交换时可能会改变相同元素的相对位置。要进行n-1次交换每次交换都得重新通过下滤操作构建堆结构(该构建操作的时间复杂度为 O(LogN))所以一共是O(NLogN)。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

为什么不自己做购物网站wordpress访客ip地址插件

腾讯正式开源高动态交互式游戏视频生成框架Hunyuan-GameCraft-1.0,该技术支持从参考图像和键鼠信号直接生成连贯游戏视频,标志着AI在游戏内容创作领域的应用迈出重要一步。 【免费下载链接】Hunyuan-GameCraft-1.0 Hunyuan-GameCraft是腾讯开源的高动态交…

张小明 2026/1/6 1:21:17 网站建设

ppt模板免费的网站推荐快乐十分网站开发

Qwen3-8B来了!80亿参数双模式AI推理神器 【免费下载链接】Qwen3-8B Qwen3-8B,新一代大型语言模型,实现逻辑推理、指令遵循和跨语言交流的飞跃性进展。独特思维模式切换,高效对话与深度推理两不误,是多语言交互与创新的…

张小明 2026/1/6 1:20:52 网站建设

鹤岗哈尔滨网站建设高端网站建设企业公司

还在为网络连接不稳定而中断电路设计进程感到困扰吗?CircuitJS1桌面版正是你需要的解决方案!这款基于NW.js开发的离线电路模拟器,让你在没有网络的环境下也能畅享专业的电路仿真体验。无论是电子爱好者、在校学生还是专业工程师,都…

张小明 2026/1/11 0:36:03 网站建设

免费素材网站无水印建设银行企业银行网站打不开

✍✍计算机毕设指导师** ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡有什么问题可以…

张小明 2026/1/7 18:16:46 网站建设

工业设计公司怎么收费青岛百度推广优化

Lowcoder_CN:重新定义企业级低代码开发的新范式 【免费下载链接】lowcoder_CN 🔥🔥🔥开源Retool, Tooljet和Appsmith的替代方案,码匠的开源版 项目地址: https://gitcode.com/gh_mirrors/lo/lowcoder_CN 开发效…

张小明 2026/1/10 5:20:41 网站建设

四川省的住房和城乡建设厅网站公司软件定制开发

文章目录 具体实现截图主要技术与实现手段关于我本系统开发思路java类核心代码部分展示结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式! 具体实现截图 同行可拿货,招校园代理 springbootdjango_m6gx9acu 基于微信小程序的助农公…

张小明 2026/1/10 18:36:21 网站建设