js排序-插入排序(三)

插入排序原理:
    1.第一轮:从第二项开始进行与前一项比较;比较1次,至多交换1次;
    2.第二轮:从第三项开始进行与前一项比较,比较2次,至多交换2次;
    3.第三轮;从第四项开始进行与前一项比较,比较3次,至多交换3次;
      ....就这样依次比较到最后一个元素;
      规律:从第二项开始进行比较,一轮至多交换一次,二轮至多交换2次,三轮至多交换3次 n 轮 次

1.普通for循环

let arrData  = [7,6,9,3,1,5,2,4];
for(let i = 1; i < arrData.length; i++) {
	//开始比较 相邻的两个数
	let leftElement = arrData[i-1];
	let rightElement = arrData[i];
	console.log("第"+i+"轮 开始 排序比较 " + arrData)
	if(rightElement < leftElement){
		arrData[i - 1] = rightElement;
		arrData[i] = leftElement;
		for(let j = i; j >0; j--){
			console.log("第"+i+"轮 进行中 & 第"+ j+"次 排序比较 前 " + arrData)
			//继续往前比较 如果小于则交换值
			if(arrData[j] < arrData[j-1]) {
				let temp = arrData[j];
				arrData[j] = arrData[j-1];
				arrData[j-1] = temp;
				console.log("第"+i+"轮 进行中 & 第"+ j+"次 排序比较 交换值后 " + arrData)
			}
		}
	}
}

2.递归函数

let arrData  = [8,7,5,3,6,2,4,5];
function insertSort(arr,num){
	for(let i= num;i>0;i--){
		console.log(`第${num}轮,至少比较${num}次前`,arr)
		if(arr[i]<arr[i-1]){
			let temp = arr[i];
			arr[i] = arr[i-1];
			arr[i-1] = temp;
			insertSort(arr);
			console.log(`第${num}轮,至少比较${num}次后`,arr)
		}
	}
}
for(let i=1;i<arrData.length;i++){
	insertSort(arrData,i)
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值