数字排序的几种方法

<script type="text/javascript">
	var testarr = [2,8,4,1,11,9,6]
	var length = testarr.length
	//冒泡排序法
	for (let i = 0; i < length; i++ ) {
		for (let j = i + 1; j < length; j++) {
			if (testarr[i] > testarr[j]) {
				let template = testarr[i]
				testarr[i] = testarr[j]
				testarr[j] = template
			}
		}
	}
	console.log(testarr)
	
	//选择排序法
	var testarr1 = [2,8,4,1,11,9,6]
	var length1 = testarr1.length
	for (let i = 0; i< length1; i++) {
		var minindex = i
		for (let j = i + 1; j < length1; j++ ) {
			if (testarr1[j] < testarr1[minindex]) {
				minindex = j
			}
		}
		let template1;
		template1 = testarr1[i];
		testarr1[i] = testarr1[minindex]
		testarr1[minindex] = template1
	}
	console.log(testarr1)
	
	//插入排序法
	var testarr2 = [2,8,4,1,11,9,6]
	var length2 = testarr1.length
	var previndex,current;
	for (let i = 1;i < length2; i++) {
		previndex = i - 1;
		current = testarr2[i]
//		选出下标靠前的,并且比当前current值大的,将其送到当前位置,一直往前排
		while(previndex >= 0 && testarr2[previndex] > current) {
			testarr2[previndex + 1] = testarr2[previndex]
			previndex--
		}
//		因为前面previndex-- 所以这里为了放到i-1的位置,要加1
		testarr2[previndex + 1] = current //将其插入到i-1的位置
	}
	console.log(testarr2)
	// 希尔排序
	var testarr3 = [2,8,4,1,11,9,6]
	var length3 = testarr3.length
	for (var i = Math.floor(length3 / 2); i > 0 / 1; i = Math.floor(i / 2)) {
		for (var j = i; j < length3; j++) {
			for (var k = j - i; k >= 0;k = k - i) {
				if (testarr3[k] > testarr3[i + k]) {
					var template3 = testarr3[k]
					testarr3[k] = testarr3[i + k]
					testarr3[i + k] = template3
				}
			}
		}
	}
	console.log(testarr3)
</script>

你可能感兴趣的:(前端逻辑基础)