据统计90%查看本帖的人,都已经注册本站了哦
您需要 登录 才可以下载或查看,没有账号?立即注册
×
易语言算法入门(5) 排序算法(三)
上节对直接插入排序进行了优化,我们暂且把优化算法称为二分直接插入排序,这种算法仅仅事对寻找插入点的过程做了优化。如果我们能找到另一中方法,可同为减少寻找插入点的次数和移动结点的次数,就可显著的提高排序的运算速度。
本节介绍的希尔排序算法是直接插入排序法的一种变种,它能有效的减少这两个方面的运算量,从而显著的提高排序操作的运算速度。
原理: 先取一个小于结点数的整数k作为分组单位,把表上的所有相距k的结点逻辑上看成一组。在个组内进行直接插入排序;减小k的取值,把表上的所有相距k的结点逻辑上看成一组。在个组内进行直接插入排序;重复以上步骤;最后一次k取1,即对整个表做直接插入排序。
其中k称为增量,增量的取值集合称为增量表。
例,无序数组[4,5,8,2,6,8,9,2,4,5,1,6,1,5,4,2] 增量表我们取成“5,3,1”(k的取值集合)
|