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

网站建设项目国内外分析报告/html网页制作

网站建设项目国内外分析报告,html网页制作,wordpress 授权,网站设计制作厂家有哪些梳排序(Comb sort)是一种由Wlodzimierz Dobosiewicz于1980年所发明的不稳定排序算法,并由Stephen Lacey和Richard Box于1991年四月号的Byte杂志中推广。梳排序是改良自泡沫排序和快速排序,其要旨在于消除乌龟,亦即在阵列尾部的小数值&#xf…

梳排序(Comb sort)是一种由Wlodzimierz Dobosiewicz于1980年所发明的不稳定排序算法,并由Stephen Lacey和Richard Box于1991年四月号的Byte杂志中推广。梳排序是改良自泡沫排序和快速排序,其要旨在于消除乌龟,亦即在阵列尾部的小数值,这些数值是造成泡沫排序缓慢的主因。相对地,兔子,亦即在阵列前端的大数值,不影响泡沫排序的效能。

在泡沫排序中,只比较阵列中相邻的二项,即比较的二项的间距(Gap)是1,梳排序提出此间距其实可大于1,改自插入排序的希尔排序同样提出相同观点。梳排序中,开始时的间距设定为阵列长度,并在循环中以固定比率递减,通常递减率设定为1.3。在一次循环中,梳排序如同泡沫排序一样把阵列从首到尾扫描一次,比较及交换两项,不同的是两项的间距不固定于1。如果间距递减至1,梳排序假定输入阵列大致排序好,并以泡沫排序作最后检查及修正。


递减率

递减率的设定影响着梳排序的效率,原作者以随机数作实验,得到最有效递减率为1.3的。如果此比率太小,则导致一循环中有过多的比较,如果比率太大,则未能有效消除阵列中的乌龟。

亦有人提议用1/\left(1-\frac{1}{e^\varphi}\right) \approx 1.247330950103979作递减率,同时增加换算表协助于每一循环开始时计算新间距。


变异形式

梳排序-11

设定递减率为1.3时,最后只会有三种不同的间距组合:(9, 6, 4, 3, 2, 1)、(10, 7, 5, 3, 2, 1)、或 (11, 8, 6, 4, 3, 2, 1)。实验证明,如果间距变成9或10时一律改作11,则对效率有明显改善,原因是如果间距曾经是9或10,则到间距变成1时,数值通常不是递增序列,故此要进行几次泡沫排序循环修正。加入此指定间距的变异形式称为梳排序-11(Combsort11)

混合梳排序和其他排序算法

如同快速排序和合并排序,梳排序的效率在开始时最佳,接近结束时,即进入泡沫排序时最差。如果间距变得太小时(例如小于10),改用诸如插入排序或鸡尾酒排序等算法,则可提升整体效能。

此方法的最大好处是不再需要检查有否进行过交换程序以将排序循环提早结束。


最差时间复杂度 \Omega(n^2)[1]
最优时间复杂度O(n)
平均时间复杂度

\Omega(n^2/2^p) 其中p表示增量

(the number of increments)[1]
最差空间复杂度

梳排序动态图:



梳排序例子分析:

假设输入为

8 4 3 7 6 5 2 1

目标为将之变成递增排序。 因为输入长度=8,开始时设定间距为8/1.3≒6, 则比较8和2、4和1,并作交换两次。

8 4 3 7 6 5 2 1
4 3 7 6 5 8 1
2 1 3 7 6 5 8 4

第二次循环,更新间距为6/1.3≒4。比较2和6、1和5,直至7和4,此循环中只须交换一次。

2 1 3 7 6 5 8 4
2 1 3 4 6 5 8 7

接下来的每次循环,间距依次递减为3 → 2 → 1,

间距=3时,不须交换

2 1 3 4 6 5 8 7

间距=2时,不须交换

2 1 3 4 6 5 8 7

间距h=1时,交换三次

2 1 3 4 6 5 8 7
1 2 3 4 6 5 8 7
1 2 3 4 5 6 8 7
1 2 3 4 5 6 7 8

上例中,共作了六次交换以完成排序。


实现代码:

[html] view plaincopy
print?
  1. package com.baobaotao.test;  
  2. /**  
  3.  * 排序研究  
  4.  * @author benjamin(吴海旭)  
  5.  * @email benjaminwhx@sina.com / 449261417@qq.com  
  6.  *  
  7.  */  
  8. public class Sort {  
  9.       
  10.     /**  
  11.      **梳排序  
  12.      * @param array  
  13.      */  
  14.     public static void combSort(int[] array) {  
  15.         int gap = array.length ;  
  16.         boolean swapped = true ;  
  17.         while(gap > 1 || swapped) {  
  18.             if(gap > 1) {  
  19.                 gap = (int)(gap/1.3) ;  
  20.             }  
  21.             int i = 0;  
  22.             swapped = false ;  
  23.             while(i + gap < array.length) {  
  24.                 if(array[i] > array[i+gap]) {  
  25.                     swap(array, i, i+gap) ;  
  26.                     printArr(array) ;  
  27.                     swapped = true ;  
  28.                 }  
  29.                 i++ ;  
  30.             }  
  31.         }  
  32.     }  
  33.     /**  
  34.      * 按从小到大的顺序交换数组  
  35.      * @param a 传入的数组  
  36.      * @param b 传入的要交换的数b  
  37.      * @param c 传入的要交换的数c  
  38.      */  
  39.     public static void swap(int[] a, int b, int c) {  
  40.         if(b == c) return ;  
  41.         int temp = a[b] ;  
  42.         a[b] = a[c] ;  
  43.         a[c] = temp ;   
  44.     }  
  45.       
  46.     /**  
  47.      * 打印数组  
  48.      * @param array  
  49.      */  
  50.     public static void printArr(int[] array) {  
  51.         for(int c : array) {  
  52.             System.out.print(c + " ");  
  53.         }  
  54.         System.out.println();  
  55.     }  
  56.       
  57.     public static void main(String[] args) {  
  58.         int[] number={11,95,45,15,78,84,51,24,12} ;  
  59.         combSort(number) ;  
  60.     }  
  61. }  

输出分析:

[html] view plaincopy
print?
  1. 11 24 45 15 78 84 51 95 12 <span style="white-space:pre"> </span>可以看出11和51比较没变、95和24比较  
  2. 11 24 12 15 78 84 51 95 45 <span style="white-space:pre"> </span>45和12比较  
  3. 11 24 12 15 45 84 51 95 78   
  4. 11 24 12 15 45 78 51 95 84   
  5. 11 15 12 24 45 78 51 95 84   
  6. 11 12 15 24 45 78 51 95 84   
  7. 11 12 15 24 45 51 78 95 84   
  8. 11 12 15 24 45 51 78 84 95   

转载请标注:http://blog.csdn.net/benjamin_whx/article/details/42461761
http://www.lbrq.cn/news/1543231.html

相关文章:

  • 云南网络宣传公司/免费的seo优化
  • 北京西站疫情防控最新消息/石家庄谷歌seo
  • 威海城市 建设信息网站/软文营销文案
  • 日本做设计的网站有哪些方面/短信营销平台
  • 邯郸企业做网站费用/百度seo关键词排名查询
  • 鞋网站建设方案/网络推广公司官网
  • 网站里面的链接怎么做的/seo快速排名
  • 杭州滨江网站开发/产品策划推广方案
  • 新能源汽车十大名牌/吴中seo页面优化推广
  • 山西seo排名/seo平台优化服务
  • 佛山网站建设哪个好点/怎样推广自己的产品
  • 重庆高端网站设计公司/苏州市网站
  • 制作企业网站html/百度榜单
  • 专业做酒店装修的公司/怎么做网络推广优化
  • 网站开发公司所需投入资源/微信软文范例大全100
  • wordpress 知识库/开封网站seo
  • wordpress emlog zblog/威海seo优化公司
  • 宁波企业网站建站/商业网站
  • 网站标签优化/大的网站建设公司
  • 做网站时怎么裁切存图/上海app网络推广公司
  • 设计app/seo引擎优化外包
  • 企业做网站公司有哪些/贺贵江seo教程
  • 如何汉化wordpress/seo搜索引擎优化价格
  • a做爰网站/百度推广怎么做免费
  • 网站开发 平台建设/凡科建站和华为云哪个好
  • 好学校平台网站模板下载不了/网站优化 推广
  • 网站后台超链接怎么做/网推拉新app推广接单平台
  • 黑龙江省建设工程网/武汉网站搜索引擎优化
  • 吴川网站建设/什么是seo优化?
  • 如何诊断网站为何被降权/百度seo通科
  • 芯科科技即将重磅亮相IOTE 2025深圳物联网展,以全面的无线技术及生态覆盖赋能万物智联
  • 中科米堆CASAIM自动化三维测量设备测量汽车壳体直径尺寸
  • 实践笔记-小端模式下的寄存器数据输入技巧;图形化界面配置注意事项。
  • 母猪姿态转换行为识别:计算机视觉与行为识别模型调优指南
  • Android Cutout(屏幕挖孔)详解
  • 云计算-云上实例部署 RocketChat:Mongodb、主从数据库、Node 环境配置指南