前端排序算法,冒泡排序、插入排序、快速排序、选择排序

1.冒泡排序思想:数组当前项和后一项比较,前比后大则交换位置,最大的数放后面。
以下代码实现:

function bubbleSort(arr){
				let temp = null;
				var len = arr.length;
				for(let i=0; i<len-1; i++){
					for(let j=0; j<len-1-i; j++){
						if(arr[j]>arr[j+1]){
							temp = arr[j];
							arr[j] = arr[j+1];
							arr[j+1] = temp;
						}
					}
				}
				return arr;
			}
			var newArr = bubbleSort([5,6,4,9,1,3,4,10,44,33,66]);
			console.log(newArr);

控制台输出:
在这里插入图片描述
2.插入排序:抽扑克牌,和手里的扑克牌依次比较

function insertSort(arr){
				let handle = [];
				handle.push(arr[0]);
				let len = arr.length;
				for(let i=1; i<len; i++){
					let A = arr[i];
					for(let j=handle.length-1; j>=0; j--){
						let B = handle[j];
						if(A>B){
							handle.splice(j+1,0,A);
							break;
						}
						if(j===0){
							handle.unshift(A)
						}
					}
				}
				return handle;
			}
			var newArr = insertSort([5,6,4,9,1,3,4,10,33,55,66]);
			console.log(newArr);

控制台输出:
在这里插入图片描述
3.快速排序:找到中间项,把它从原来数组中移除

function quickSort(arr){
				if(arr.length<=1){
					return arr;
				}
				let middleIndex = Math.floor(arr.length/2);
				let middleValue = arr.splice(middleIndex,1)[0];
				let arrLeft = [];
				let	arrRight = [];
				for(let i =0; i<arr.length; i++){
					let item = arr[i];
					item < middleValue ? arrLeft.push(item) : arrRight.push(item);
				}
				var newArr = quickSort(arrLeft).concat(middleValue, quickSort(arrRight));
				return newArr;
			}
			var newArr = quickSort([5,6,4,9,1,3,4,10,55,33,66,77]);
			console.log(newArr);

控制台打印:
在这里插入图片描述
4.选择排序:从头开始,每一项跟后面所有进行比较,前大于后就换位置;

function selectSort(arr){
				let len = arr.length;
				let temp = null;
				for(let i=0; i<len-1; i++){
					var min = i;
					for(var j =min+1; j<len; j++){
						if(arr[min]>arr[j]){
							min = j;
						}
					}
				temp = arr[i];
				arr[i] = arr[min];
				arr[min] = temp
				}
				return arr
			}
			var newArr = selectSort([5,6,4,9,1,3,4,10,55,33,66,77]);
			console.log(newArr);

控制台打印:
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

带风的少年

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值