本文描述了基于JavaScript的希尔排序算法。分享给大家参考,如下:
通过对直接插入排序的分析,我们知道它的时间复杂度为O(n2),但如果要排序的序列是正序列,它的时间复杂度可以增加到O(n)。希尔的排序是一种改进的排序。Hill排序的核心思想不同于Insert排序,Insert排序是先比较远处的元素,而不是相邻的元素。通过定义一个间隔序列,它指示在排序过程中元素之间的距离。
下图说明了希尔排序中的间隔序列是如何工作的:
下面我们用js来实现Hill排序,代码如下:
!doctype html townleta charset=' utf-8 ' title JAVAScript hill sort/title/head dyscript type=' text/JAVAScript '函数shell sort(nums){//hill sort var gap=[5,3,1];//定义(var g=0;gga PS . length;g){//start for(var I=gap[g];分钟长度;I ){//带区间值的traverse var temp=nums[I];//为(var j=i)选择元素;j=gap[g]nums[j-gap[g]]temp;j-=gap[g]){//如果前一个大于下一个nums[j]=nums[j-gap[g]];//向后移动} nums[j]=temp;//填充}}}函数show(nums){//显示数组for(var I=0;分钟长度;I){ document . write(nums[I]' ');} document . write(' br ');} var nums=[6,0,2,9,3,5,8,0,5,4];show(nums);//6 0 2 9 3 5 8 0 5 4 shellSort(nums);//希尔排序显示(nums);//0 0 2 3 4 5 6 8 9/script/body/html排序过程如下:
希尔排序根据区间序列的选择有不同的时间复杂度,但需要注意的是区间序列中的值除了1之外没有共同的因子,最后一个区间值必须等于1。
更多对JavaScript相关内容感兴趣的读者可以查看本网站专题:《JavaScript数据结构与算法技巧总结》、《JavaScript数学运算用法总结》、《JavaScript排序算法总结》、《JavaScript遍历算法与技巧总结》、《JavaScript查找算法技巧总结》、《JavaScript错误与调试技巧总结》、0103010。
希望本文对JavaScript编程有所帮助。