【JS小白】插入排序和希尔排序

参考:https://blog.csdn.net/xin9910/article/details/74080203

直接插入排序伪代码

(arr):
	i:[1,n):
		preIndex=i-1
		cur=[i]
		while(preIndex>-1 && [preIndex]>cur):
			[preIndex+1]=[preIndex]
			preIndex-=1
		[preIndex+1]=cur

直接插入排序JS代码

function insertSort(arr){
    for(let i=1;i<arr.length;i++){
        let preIndex=i-1;
        let cur = arr[i];
        while(preIndex>-1 && arr[preIndex]>cur){
            arr[preIndex+1]=arr[preIndex]
            preIndex--;
        }
        arr[preIndex+1]=cur
    }
    return arr
}

console.log(insert([5,3,1,8,-5,1,-30,4]));

希尔排序伪代码

希尔排序(上面+1或-1的地方都要换成gap):

(arr):
	gap=n/2
	while(gap>0):
		i:[gap,n)
			preIndex=i-gap
			cur=[i]
			while(preIndex>-1 && [preIndex]>cur):
				[preIndex+gap]=[preIndex]
				preIndex-=gap
			[preIndex+gap]=cur
		gap/=2

希尔排序JS代码

function shellSort(arr){
    let gap = Math.floor(arr.length / 2) 

    while(gap > 0){
        for(let i=gap;i<arr.length;i++){
            let preIndex = i-gap;
            let cur = arr[i]
            while(preIndex>-1 && arr[preIndex] > cur){
                arr[preIndex+gap]=arr[preIndex];
                preIndex-=gap;
            }
            arr[preIndex+gap]=cur
        }
        gap=Math.floor(gap/2)
    }

    return arr
}


console.log(shellSort([5,3,1,8,-5,1,-30,4]));
posted @ 2022-06-08 17:27  greencode  阅读(46)  评论(0编辑  收藏  举报