前端排序 - 冒泡、插入、选择三个经典排序,以及es6sort排序

在这里插入代码片

	let arr = [5,4,3,2,1]
			//  冒泡排序:相邻两项相比i与i+1,双循环,循环轮数i,相比次数j 判断arr[j]>arr[j+1] 解构赋值.
			// -1 是性能优化
			// i i+1 =>交换位置
			// 第一项比第二项大就向后排序
			function mp(arr) {
				for (let i = 0; i < arr.length; i++) { // 循环轮数
				for (let j = 0; j < arr.length-1-i; j++) {// 对比次数
				   if (arr[j]>arr[j+1]) {
				   	[arr[j],arr[j+1]] = [arr[j+1],arr[j]]
				   }
				}
				}
				return arr
			}
		
			console.log(mp(arr), '冒泡排序 ');
			
			// 插入排序
			// 找到你要排序的元素 ,找到合适的位置
			// 假设 第一个已经排序好的位置
			function cr(arr) {
				for (let i = 1; i < arr.length; i++) {
					let v= arr[i] // 存储
					let j = i - 1 // 从后向前搜索,用于插入顺序
					while(j>=0&& v<arr[j]) {
						arr[j+1] = arr[j]; // 替换位置
						j--
					} 
					arr[j+1] = v
					// 不满足循环,就把缓存里的变量 复制给当前元素
				}
				return arr
			}
			console.log(cr(arr),'插入排序');
			
			// 选择排序,找到数组中最小项,直接放到最前面。
			function xz (arr) {
				let minNum = 0
				for (let i = 0; i < arr.length; i++) {// 第一层循环,拿的是数组的每一项
					// 控制循环次数
					minNum = i // 第0向开发,要和剩余项对比
					for (var j = i; j < arr.length; j++) {// 循环对比项,是随着i变化而变化的
						// j 要从第i向开始
						if(arr[minNum]>arr[j]){
							minNum = j;
						}						
					}
					if(minNum!==i) { // 每次 第二层for循环完毕 会执行这里		
						[arr[minNum],arr[i]] = [arr[i],arr[minNum]]
					}
				
				}
				return arr
			}
			console.log(xz(arr),'选择排序');

	        // es6排序 函数sort
		   // 数组.sort((a,b)=>a-b) ;改变原数组	 
		   //挂载原型
		   Array.prototype.MySort = function() {
		       return this.sort((a, b) => a - b)  //箭头函数不加大括号时指向这个函数的返回值,可以不写return关键字
		   }
		  
		   let Arr = [56, 21, 88, 10, 5, 77]
		   Arr.MySort() //调用
		console.log(Arr, '函数sort排序');
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值