网站开发需要2个月吗网站建设报价表格式

张小明 2026/1/5 18:21:13
网站开发需要2个月吗,网站建设报价表格式,佛山网站建设公司如何组建,美工个人网站目录 直接插入排序和希尔排序 直接插入排序 ​编辑 单趟 全过程 希尔排序 简单版本希尔排序 完整版希尔排序 选择排序 算法简介 代码实现 直接插入排序和希尔排序 直接插入排序实际上可以视作是希尔排序的组件#xff0c;所以我这里将直接插入排序和希尔排序放到一…目录直接插入排序和希尔排序直接插入排序​编辑单趟全过程希尔排序简单版本希尔排序完整版希尔排序选择排序算法简介代码实现直接插入排序和希尔排序直接插入排序实际上可以视作是希尔排序的组件所以我这里将直接插入排序和希尔排序放到一起了直接插入排序下面是直接插入排序的升序例子我们可以看到直接插入排序就是将一个值“拿出来”将他和他将要插入的值的前一个值依次对比如果拿出来的值小于该值就将拿出来的值插入到前面比较过的位置此时break如果拿出来的值大于该值就将对比后的值向后挪继续向前遍历单趟void InsertSort(int* arr, int n) { int end;//按下不表芝士拿出来的值的上一个值的下标 int temp arr[end 1]; while (end 0) { //当arr[end]大于temp是继续遍历 if (arr[end] temp) { arr[end 1] arr[end]; end--; } else { break; } } arr[end 1] temp; }这里我将最后插入做了统一处理当在end0时找到了合适的插入位置此时end1位置上的数已经移动到了上一个end1的位置上按照此时的位置就是end2,相当于是此时end1上的值是无效的此时我们将temp赋值给arr[end1]当在end0的范围内都没有找到合适得插入位置此时end-1(刚刚跳出循环)end1正好是0没有越界也符合实际此时temp是最小的插到最前面。全过程void InsertSort(int* arr, int n) { for (int begin 0; begin n - 1; begin) { int end begin; int temp arr[end 1]; while (end 0) { //当arr[end]大于temp是继续遍历 if (arr[end] temp) { arr[end 1] arr[end]; //这一步是挪动arr中的值 end--; } else { break; } } arr[end 1] temp; //这里将所有的情况统一处理并处理了end -1的边界情况 } }这里相当于是每次都对begin1(也是end1)的数据进行排序所以for循环是这样写的for (int begin 0; begin n - 1; begin)这里的直接插入排序实际上改几下就是希尔排序希尔排序希尔排序Shell Sort全称“缩小增量排序”Diminishing Increment Sort是插入排序的一种更高效的改进版本直接插入排序在碰到全是逆序的数据使会变得非常的坑这时希尔排序就通过将数据大踏步的向后调整的预排序使数据更趋向于有序从而大大减少了计算量希尔排序的本质是分组。它不再把数组看作一个整体而是根据一个“增量”gap将数组分割成若干个子序列这个过程中所有的值都被遍历了一遍。希尔排序通过让元素“跳跃式”地向最终位置移动大幅减少了数据交换和移动的次数简单版本希尔排序我们先写一个gap3的只进行一次预排序的希尔排序void ShellSort(int* arr, int n) { int gap 3; for(int i 0; i gap; i)//分组写法 { for (int begin i; begin n - gap; begin gap) { int end begin; int temp arr[end gap]; while (end i) { if (arr[end] temp) { arr[end gap] arr[end]; end--; } else { break; } } arr[end gap] temp; } } for (int begin 0; begin n - 1; begin) { int end begin; int temp arr[end 1]; while (end 0) { if (arr[end] temp) { arr[end 1] arr[end]; end--; } else { break; } } arr[end 1] temp; } }这个希尔排序只进行了一次粗排而且gap也是写死的这实际上是不够完善的对于大量的数据只进行这一次预排序显然是不够的这时我们就应该将gap写成动态的完整版希尔排序这里的gap取值也是有讲究的gap取得大一点跳得更快但是排的数据有序性较差gap取得小一点跳得更慢但是排的数据有序性较好学术界经过研究得出每次gap除3是最好的整个排序算下来的时间复杂度是O(n^1.3)void ShellSort(int* arr, int n) { int gap n / 3 1; //这里的do_while是一个小巧思当gap1时可以只进行一次排序,在首个gap do { //先使用再改变gap for (int j 0; j gap; j) { for (int i j; i n - gap; i gap) { int end i; int temp arr[end gap]; while (end j)//这里是一个边界条件我们应该将预排序视作是划分了一个新的组 { if (arr[end] temp) { arr[end gap] arr[end]; end - gap; } else { break; } } arr[end gap] temp; } } gap gap / 3 1; } while (gap 1); }选择排序算法简介选择排序是一种简单直观的排序算法。它的工作原理是在未排序序列中找到最小或最大元素将其存放到排序序列的起始位置然后再从剩余未排序元素中继续寻找最小或最大元素放到已排序序列的末尾重复以上步骤直到所有元素均排序完毕代码实现void SelectSort(int* arr, int n) { int begin 0, end n - 1; while (begin end) { int max begin, min begin; for (int i begin 1; i end; i) { if (arr[max] arr[i]) { max i; } if (arr[min] arr[i]) { min i; } } Swap(arr[begin], arr[min]); if (begin max) max min; Swap(arr[end], arr[max]); begin; end--; } }这里有一步需要解释一下if (begin max) max min;这一步是为了处理beginmax的边界情况示例arr [5, 1, 4, 2, 3]第一轮循环begin 0,end 4max 0(arr[0]5是最大值)min 1(arr[1]1是最小值)如果没有这一步的话直接交换arr[begin]和arr[min]会导致max指向的值被移动后面的逻辑就错了。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

免费咨询疾病的网站广西网站建设渠道

大岩资本黄铂:A股量化的未来是细节致胜近期,嘉石大岩私募证券基金管理有限公司总经理兼首席投资官黄铂出席了东南亚经济与金融论坛。会上,黄博士以量化投资的视角,分享了不同市场环境下Alpha的来源变化,以及量化策略未…

张小明 2025/12/23 23:36:00 网站建设

阿里巴巴国际网站官网网赌赢了钱被网站黑了需要怎么做

三小时搞定企业级数据可视化:JimuReport零基础实战指南 【免费下载链接】JimuReport jeecgboot/JimuReport: JimuReport是一个开源的轻量级报表工具,提供零编码数据可视化能力,支持多种数据库类型,能够快速生成各种复杂报表并实现…

张小明 2025/12/23 23:33:59 网站建设

企业网站的内容营销型网站建设供货商

我分 3 层 给你讲清楚:① 这段 CORS 代码到底干嘛 ② FastAPI 和 Vue 是如何“前后端交互”的 ③ 浏览器在中间扮演了什么角色(为什么不加 CORS 会报错)你看完这部分,前后端交互在你脑子里会是“透明的”。一、这段 CORS 代码是不…

张小明 2025/12/23 23:31:58 网站建设

怎么把自己做的网站让外网访问沈阳建站多少钱

✅作者简介:热爱科研的Matlab仿真开发者,擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室🍊个人信条:格物致知,完整Matlab代码及仿真咨询…

张小明 2025/12/23 23:29:57 网站建设

合肥网站建设代理商深圳高端做网站

第一章:生物信息防护的黄金标准概述在现代信息安全体系中,生物信息因其唯一性和不可再生性,成为高价值保护对象。生物信息防护的黄金标准不仅涉及数据加密与访问控制,更要求从采集、存储到传输全过程实现端到端的安全保障。核心防…

张小明 2025/12/23 23:27:55 网站建设

怎么做婚介网站广告网络营销

AutoScreenshot智能截屏系统:从入门到精通的完整指南 【免费下载链接】AutoScreenshot Automatic screenshot maker 项目地址: https://gitcode.com/gh_mirrors/au/AutoScreenshot 在当今数字化工作环境中,屏幕内容的自动记录已成为提升工作效率的…

张小明 2025/12/23 23:25:54 网站建设