js中的插入排序

插入排序

插入排序的思想:将整个数组a分为有序和无序的两个部分。前者在左边,后者在右边。开始有序的部分只有a[0] , 其余都属于无序的部分
每次取出无序部分的第一个(最左边)元素,把它加入有序部分。假设插入合适的位置p,则原p位置及其后面的有序部分元素都向右移动一个位置,有序的部分即增加了一个元素。一直做下去,直到无序的部分没有元素

function insert(arr){
	//1. 准备一个新数组,用来存储抓到手里的牌,开始先抓一张牌进来
	let handle=[]
	handle.push(arr[0])
	//2. 从第二项开始一次抓牌,一直到把牌面上的牌抓光
	for(let i=1;i<arr.length;i++){
		//a是新抓的牌
		let a=arr[i]
		//和handle手里的牌一次比较(从后向前)
		for(let j=handle.length-1;j>=0;j--){
			//每一次要比较的手里的牌
			let b=handle[j]
			//如果当前新牌A比要比较的牌B大,把A放到B的后面
			if(a>b){
				handle.splice(j+1,0,a)
				break
			}
			//已经比到了第一项了,我们把新牌A放到最前面即可
			if(j===0){
				handle.unshift(a)
			}
		}
	}
	return handle
}
let arr=[1,5,3,7,8]
let result =insert(arr)
console.log(result)//[1, 3, 5, 7, 8]
posted @ 2020-02-20 11:34  香荣如梦  阅读(506)  评论(0编辑  收藏  举报