当前位置: 首页 > news >正文

密云网站建设服务上海网站建设推广

密云网站建设服务,上海网站建设推广,做网站好迷茫,wordpress主题jquery希尔排序#xff08;直接插入排序的优化#xff09; 1.分组思想 上图中gap为5#xff0c;说明要分成5组。 这5组分别用了五种颜色的线条连接起来了。 第1组#xff1a;9、4 第2组#xff1a;1、8 第3组#xff1a;2、6 第4组#xff1a;5、3 第5组#xff1a;7、5 2.缩… 希尔排序直接插入排序的优化 1.分组思想 上图中gap为5说明要分成5组。 这5组分别用了五种颜色的线条连接起来了。 第1组9、4 第2组1、8 第3组2、6 第4组5、3 第5组7、5 2.缩小增量的过程 前面gap为5的情况排序后会变成下面情况 按照gap把数据分成了两组。 当数据很大的时候数据的间隔很大。 小的数据会往前方大的数据会往后放。 gap会逐渐缩小间隔也会逐渐缩小。 整体的数据会更加趋于有序这个时候使用直接插入排序效率会更高。 gap为2的时候会排序成下面情况 此时分为了1组再排序一次后变成下面情况 此时的数据即为有序的。 3.排序情况分析 3.1 排序五组数据的情况 gap为5将数据分为5组图中红色线画中的为第一组。定义一个 i 变量指向这一组的第二个数据定义一个 j 变量指向 i - gap 的位置。 将 i 下标的值放到定义的 tmp 中然后与 j下标 的值比较。 若 j 下标的值较大将 j 下标的值放到 j gap 的位置。 执行后 j 变量向 j - gap 位置走若这个位置的下标为负数。 则要将 tmp 的值放到 j gap的位置。 j 变量此时在-5下标处要将 tmp 的值放到 j 5的位置。 这一组数据此时为有序了。 排序下一组数据i即可j 变量依然是在 i - gap 的位置。 后面4组数据类似不在演示。 最终排序结果是 3.2 排序两组数据的情况 此时 gap 为2数据此时分为了两组。第一组由红色线画出4、2、5、8、5第二组由蓝色线画出1、3、9、6、7。 i 变量指向这一组的第二个数据 j 变量指向 i - gap 的位置。 将 i 下标的值放到定义的 tmp 中然后与 j下标 的值比较。 若 j 下标的值较大将 j 下标的值放到 j gap 的位置。 执行后 j 变量向 j - gap 位置走若这个位置的下标为负数。 则要将 tmp 的值放到 j gap的位置。 j 变量此时在-2下标处要将 tmp 的值放到 j 2的位置。 这一组数据中的 2 和 4 此时为有序了。 排序下一组数据i 即可j 变量依然是在 i - gap 的位置。 后面剩下的数据类似不在演示。 最终排序结果是 3.3 排序一组数据的情况 i 变量指向第二个数据 j 变量指向 i - gap 的位置。 将 i 下标的值放到定义的 tmp 中然后与 j下标 的值比较。 若 j 下标的值较大将 j 下标的值放到 j gap 的位置。 执行后 j 变量向 j - gap 位置走若这个位置的下标为负数。 则要将 tmp 的值放到 j gap的位置。 j 变量此时在-1下标处要将 tmp 的值放到 j 1的位置。 此时 前两个数据有序了后面的数据排序过程类似。 排序下一组数据i 即可j 变量依然是在 i - gap 的位置。 最终结果是 4.代码分析以及实现 1.间隔分组通常为总长度的一半 2.组内排序 3.重新设置间隔分组为前一组的一半 4.当gap 1时,为直接插入排序。 void ShellSort(int *arr, int n) {// 初始化间隔为数组的长度int gap n; while (gap 1){// 逐渐减小间隔每次将间隔除以2gap / 2;// 也可以使用这种方式来减小间隔这是一种不同的策略// gap gap / 3 1;// 遍历数组每次跳过gap个元素对每个子序列进行插入排序for (int i 0; i n - gap; i){// 初始化j为当前元素的索引int j i;// 保存当前子序列的元素以便在排序过程中移动int tmp arr[i gap];// 将tmp插入到已排序的子序列中的正确位置while (j 0){// 如果tmp小于子序列中的元素则将该元素向后移动一个间隔if (tmp arr[j]){arr[j gap] arr[j];// 继续向前比较j - gap;}else{// 如果tmp不小于子序列中的元素则跳出循环break; }}// 当j为负数时表示tmp已经找到了正确的位置将其插入到子序列中arr[j gap] tmp;}} }执行结果 5.性能分析
http://www.hkea.cn/news/14506896/

相关文章:

  • 深圳做网站做app一个网站的主题和设计风格
  • 自学网页设计的网站学做网站需要什么条件
  • 周村网站制作首选公司seo教程技术优化搜索引擎
  • 登录企业网站管理系统Seo与网站推广的技术对比
  • 网站免费源代码成都微信网站建设报价单
  • 信誉好的企业网站建设天津网站建设案例教程
  • 建网站后如何运营中山网站建设如何
  • 凯里网络公司建设网站开发小网站排名
  • wordpress建站中英文企业网站搭建价格
  • 建设部标准网站wordpress 谷歌插件
  • 网站上线多少钱网站生成手机站
  • 沈阳出名网站免费cad图纸下载网
  • 杂谈发现一只网站是你们谁做的代理企业网站备案
  • 广东省建网站公司面向搜索引擎网站建设
  • 网站建设建站在线建站网站免费推广大全
  • 深圳企业网站建设服务好网站多少钱
  • 个人网站如何做支付功能厦门市建设工程安全质量协会网站
  • 潍柴新建站登录网址现在建网站多少钱
  • 以数字域名为网址的网站成都专业网站制作哪家好
  • dz可以做门户网站吗开发公司把已经出售的房子一房二卖卖给股东个人
  • 淘宝做链接的网站手机网站会员识别功能
  • 网站开发手册下载小程序可做网站吗
  • 网站建设的维护与更新google官方下载安装
  • 从用户旅程角度做网站分析wordpress 中文摘要
  • 贵阳网站建设公司排名wordpress搭建问题
  • 小米的网站是哪个公司做的asp做的网站亚丝娜娜本子全彩
  • 网站是每年都要付费吗网站设置主网
  • 湘潭网站建设出色磐石网络wordpress如何屏蔽特定国家的用户
  • 学校网站网页设计湛江建设培训学校网站
  • 快手里做网站荣耀封面的视频微信服务号开发方案