ui设计做网站淘宝网站官网

张小明 2026/3/2 18:33:39
ui设计做网站,淘宝网站官网,wordpress标签页插件,什么网站找厂做袜子目录 直接插入排序和希尔排序 直接插入排序 ​编辑 单趟 全过程 希尔排序 简单版本希尔排序 完整版希尔排序 选择排序 算法简介 代码实现 直接插入排序和希尔排序 直接插入排序实际上可以视作是希尔排序的组件#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进行投诉反馈,一经查实,立即删除!

深圳做网站开发开发公司与物业公司的交接手续

LobeChat 接入通义千问、百川、GLM 等国产大模型实战指南 在大模型落地的浪潮中,一个常被忽视但至关重要的环节是:如何让用户真正“用得上”这些强大的AI能力? 前端交互界面,正是连接复杂后端模型与普通用户的桥梁。然而&#xff…

张小明 2026/1/10 12:55:33 网站建设

秦皇岛做网站多少钱免费开个人网店

Gustavo Salvador,MSG Agncia Digital的数字策略师兼数字培训联合制作人,一直在他的在线业务中使用n8n。我们与他探讨了如何将n8n工作流应用于数字营销和为客户制作创意内容。问:你好Gustavo,请介绍一下你自己?我叫Gus…

张小明 2026/1/11 8:41:07 网站建设

自助申请海外网站一些网站只能在微信打开怎么做的

永磁同步电机VF控制,IF恒流频比控制,恒压频比控制,三相电机MATLAB(simulink)控制仿真,可做V/F开环加中高速无传感全速域复合控制最近在搞三相永磁同步电机控制,发现V/F控制这玩意儿真是让人又爱…

张小明 2026/1/10 9:58:46 网站建设

建设岗位考试网站找工作的网站

. 安装环境操作系统:Windows 10 或以上版本数据库:MySQL 8.0 或以上版本(我开发使用的是Windows版本,Linux版本没有测试).NET 6.0Yarn:1.22 或以上版本2. 拉取项目代码2.1 命令行拉取项目代码打开命令行工具(如 PowerS…

张小明 2026/1/10 12:16:35 网站建设

北京网站优化前景wordpress文章自动tag

在激烈的游戏对局中,你是否经常因为光标太小、颜色单调而丢失鼠标位置?YoloMouse游戏光标自定义工具正是为此而生的终极解决方案。这款强大的开源工具能够智能替换游戏中的默认鼠标指针,提供多种醒目的自定义选项,彻底解决光标追踪…

张小明 2026/1/10 12:22:17 网站建设

盐城网站建设24gxwordpress做社区网站

网盘下载限速终结者:一键获取真实直链的完整攻略 【免费下载链接】Online-disk-direct-link-download-assistant 可以获取网盘文件真实下载地址。基于【网盘直链下载助手】修改(改自6.1.4版本) ,自用,去推广&#xff0…

张小明 2026/1/10 11:58:17 网站建设