• 希尔排序(JS代码)


    希尔排序是希尔(Donald Shell) 于1959年提出的一种排序算法。希尔排序也是一种插入排序,它是简单插入排序经过改进之后的一个更高效的版本,也称为缩小增量排序,同时该算法是冲破O(n2)的第一批算法之一。它与插入排序的不同之处在于,它会优先比较距离较远的元素。希尔排序又叫缩小增量排序。

    先将整个待排序的记录序列分割成为若干子序列分别进行直接插入排序

    增量开始为gap=length/2,缩小增量继续以gap = gap/2的方式,直到gap=1后,当gap为1时这时候也就相当于对整个数组进行插入排序

    Array.prototype.shellSort = function() {
    	let len = this.length
    	let gap = parseInt(len/2)
    	while(gap > 0){
    		// console.log(1)
    		for (let i = 0; i < gap; i++) {
    			for (let j=i; (j+gap)<len; j+=gap) {
    				for (let k = j+gap; k > 0; k-=gap) { // 这里其实就是插入排序
    					if (this[k] < this[k-gap]) {
    					// 这里开始和左边已排好序的进行比较,如果小于前面的就换位
    						let tempnum = this[k]
    						this[k] = this[k-gap]
    						this[k-gap] = tempnum
    					} else { 
    					// 这时候最大的已经在最右边了,没必要再和前面比了
    						break
    					}
    				}
    			}
    		}
    		gap = parseInt(gap/2);
    	}
    }
    let arr = [2,9,5,7,1,1,6,3,3,4]
    arr.shellSort()
    console.log("排序后:", arr5.toString())
    // 1,1,2,3,3,4,5,6,7,9
    

      

  • 相关阅读:
    web自动化中的三种切换---alert弹框切换
    web自动化中的三种切换--窗口切换
    web自动化中的三种切换---iframe
    web元素定位中的三种等待方法
    web自动化浏览器chrome和驱动chromedriver
    selenium安装
    pytest用例标记规则
    键盘事件
    鼠标事件
    控制浏览器
  • 原文地址:https://www.cnblogs.com/bobo1/p/12501494.html
Copyright © 2020-2023  润新知