js中数组常用的排序


1.常用的排序函数


var arr = [1,2,9,4,3,6,5,7,8]

** 随机排序**

var a = arr.sort(()=> Math.random()-0.5) ; 

倒序 从大到小进行排序

var b = arr.sort((X,Y) =>(Y-X));     

//结果 [9,8,7,6,5,4,3,2,1]

正序 从小到大排序

var c = arr.sort((X,Y)=>(X-Y));

//结果 [1,2,3,4,5,6,7,8,9]

反向排序 两种情况
/**
* 例如 var arr = [1,2,3,4,5,6,7,8]
* 输出 [8,7,6,5,4,3,2,1]
* */

	// 第一种方法使用reverse()函数
	var d = arr.reverse();
	//第二种方法原生的写
	for(var i = 0; i<arr.length/2;i++){
		//arr[0]   arr[arr.length-1-0]
		//arr[1]   arr[arr.length-1-1]
		//arr[2]   arr[arr.length-1-2]
		//arr[3]   arr[arr.length-1-3]
		//使用第三方变量交换连个变量的值
		var part = arr[i]
		arr[i] = arr[arr.length-1-i];
		arr[arr.length-1-i] = part
	}
//结果[8,7,6,5,4,3,2,1]

2.冒泡排序


//冒泡排序
//冒泡排序规则:前后两两进行比较,如果符合比较的条件,就交换两个数的位置,知道所有的数据都符合从小到大条件,结束排序
//规律 每一轮比较,都会找出来一个比较大的数,放在正确的位置上
/**
	例子
 var arr = [9, 8, 7, 6, 5, 4]
 第一轮:
 9, 8, 7, 6, 5, 4
 8, 9, 7, 6, 5, 4
 8, 7, 9, 6, 5, 4
 8, 7, 6, 9, 5, 4
 8, 7, 6, 5, 9, 4
 8, 7, 6, 5, 4, 9

 第二轮:
 8, 7, 6, 5, 4
 7, 8, 6, 5, 4
 7, 6, 8, 5, 4
 7, 6, 5, 8, 4
 7, 6, 5, 4, 8

 第三轮:
 7, 6, 5, 4
 6, 7, 5, 4
 6, 5, 7, 4
 6, 5, 4, 7

 第四轮:
 6, 5, 4
 5, 6, 4
 5, 4, 6
 第五轮:
 5, 4
 4, 5

 总结:
 比较的轮数 = 数组长度 - 1;
 每一轮比较的次数 = 数组长度 - 当前轮数
**/
<script>
	var arr = [32,4,7,58,45,11,62,2];
	//	轮数
	for (var i = 0;i < arr.length - 1; i++){
		// 次数
		for (var j = 0 ; j < arr.length - 1 -i; j++){
			//判断前一个大于后一个数时进行交换
			if(arr[j] > arr[j + 1]){
				//借助第三方变量交换两个变量的值
				var part = arr[j];
				arr[j] = arr[j+1];
				arr[j+1] = part;
			}
		}
	}
	console.log(arr)

</script>


3.选择排序


//选择排序
//规则:通过比较首先选出最小的数放在第一位置上,然后在其余的数中选出最小的数放在第二个位置上,依次类推,知道所有的数成为有序序列
/**

 var arr = [9, 8, 7, 6, 5, 4]
  第一轮:
		 9, 8, 7, 6, 5, 4
		 8, 9, 7, 6, 5, 4
		 7, 9, 8, 6, 5, 4
		 6, 9, 8, 7, 5, 4
		 5, 9, 8, 7, 6, 4
		 4, 9, 8, 7, 6, 5
 	一号位 比较出最小的数为4
 	
    第二轮:
		 9, 8, 7, 6, 5
		 8, 9, 7, 6, 5
		 7, 9, 8, 6, 5
		 6, 9, 8, 7, 5
		 5, 9, 8, 7, 6
	 二号位 比较出最小的数为5

    第三轮:
		 9, 8, 7, 6
		 8, 9, 7, 6
		 7, 9, 8, 6
		 6, 9, 8, 7
	 三号位 比较出最小的数为6

    第四轮:
		 9, 8, 7
		 8, 9, 7
		 7, 9, 8
	 四号位 比较出最小的数为7

 	第五轮:
	 	8, 9
	 四号位 比较出最小的数为8

	 总结:
	 比较的轮数  =  数组长度  - 1
	 每一轮比较次数 = 数组长度 - 当前轮次
 * */
<script>
		var arr = [9,8,7,6,5,4]
		//轮数
		for (var i = 0; i < arr.length-1;i++){
			//次数
			for (var j = i + 1;j <arr.length;j++){
				if (arr[i] >arr[j]){
					//借助第三方变量交换两个变量的值
					var part = arr [i];
					arr[i] = arr[j];
					arr[j] = part;
				}
			}
		}

</script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值