javascript排序算法中的希尔排序2例

javascript排序算法中的希尔排序2例
插入排序是有效时,它在数据几乎是定制的,即线性排序的效率。
但是插入排序通常效率不高,因为插入排序只能一次移动一位。
希尔排序是根据它的设计者Hill的名字命名(Donald Shell),这是发表在1959。教科书和参考手册的一些旧版本调用算法壳Metzner
希尔排序的基本思想:首先把一个小于n的整数d1为增量,将所有记录到D1组。所有的D1的距离的多个记录都放在同一组。第一,直接插入排序是在每个组;然后,把第二增量<D1 D2重复上述分组和排序直到增量dt=1(DT < dt-l <)了。< < D1,D2),所有的记录都放在同一组进行直接插入排序。

这种方法实质上是一种包插入方法。

例1:
复制代码代码如下所示:

*希尔排序,也称为递减递增排序算法,是插入排序的一种更有效和改进的版本。
*
*希尔排序是基于插入排序的以下两个属性,并提出了一种改进的方法。
*
*插入排序是高效运行的时候,就几乎已经预订数据,即线性排序的效率可以达到。
*但是插入排序通常效率不高,因为插入排序只能一次移动一位。
*
* /

功能希尔(列表){
VaR的差距= math.floor(list.length / 2);

当(间隙> 0){

对(我=差距;我< list.length;i++){
列表= { };

对于(j = i;j)空白列表
列表{列表=;
}
列表{ = } =温度
}

差距= math.floor(缺口2);
}

返回列表;
};

测试
var arr = { 2, 1, 3,12, 5, 66,23, 87, 15,32 };

ShellSort(ARR);
例2:
复制代码代码如下所示:

/ / document.write(Hill排序、插入排序的升级,1959壳了。当增量正确时,时间复杂度为n 1.3倍;
/ / document.write()
数组=新数组(12, 25, 32,16, 18, 27,59, 69, 36);
功能希尔(阵列){
Var J,我,V,H = 1,S = 3,k,n = array.length;
var结果;
var计数= 0;
而(h<N)
h=1;

当(h = 1){
H =(H-1) / S;
对于(k = 0;k;h;k +)
对于(i = H,h,j = i;;i;n;i =;h,j = i){
v =数组{ };
虽然(真实)
如果((j = h)数组{ } = 0 V)
数组{ = } =数组{ };
其他的
打破;
数组{;

}
计数+;
结果++ +计数+ 是一种全部:;
对于(n = 0 n<VaR;array.length;n + +){
结果
}
}
返回结果;
}
/ / shallsort(阵列);
/ / document.write();

免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部