冒泡排序,选择排序,快速排序(javaScript实现)

1. 冒泡排序

//原理:比较两个相邻数之间的大小
		function bubbleSort(arr){
			let len= arr.length;
			for(var j = 0; j < len-1; j++){
				for(var i = 0; i < len-1-j; i++){
					if(arr[i] > arr[i+1]){
						var tmp = arr[i];  //tmp等于当前位置
						arr[i] = arr[i+1]; //将找到的最小值的位置赋值给当前位置
						arr[i+1] = tmp;    //再将当前位置的值放到最小值的位置上完成交换
					}

				}
			}
			console.log(arr);
		}
		bubbleSort([3,1,4,5,2]);

2. 选择排序

//原理:从数组中找出最小值或最大值放到数组第一位,再从剩余的数中寻找最小最大值放到第二位,依次排序。
	function selectSort(arr){
		var len = arr.length;   //让len等于数组的长度
		var minNum , temp;
		for(var i = 0;i<len-1;i++){
			var minNum = i;
			for(var j = i+1; j<len; j++){
				if(arr[j] <arr[minNum]){
					minNum = j;   //获取最小值的地址
				}
			}
			temp = arr[i];       //让temp等于第i个数的地址
			arr[i] = arr[minNum];  //将最小值与第i个数替换
			arr[minNum] = temp;  //再将第i个数换到原来最小值的位置上
		}
		console.log(arr);   //输出数组
	}
	var arr = [12,35,9,22,30];
	selectSort(arr);

3. 快速排序

//原理:以一个数为基准,将其他数与它进行比较,比它小的放左边,大的放右边
		function quickSort(arr){
			if(arr.length<2){   //如果数组长度小于2直接输出
				return arr;
			}
			var middle = arr[arr.length-1];  //以最后一个数为基准
			var left = arr.filter((v,i)=> v <= middle &&i!==arr.length -1);  //创建一个新数组存放比基准小的数
			var right = arr.filter((v)=> v > middle);  //创建一个新数组存放比基准大的数
			return [...quickSort(left), middle ,...quickSort(right)];  //返回数组,并将其排序;...是扩展运算符,这里是数组合并
		}
		console.log(quickSort([3,4,1,5,2]));

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值