JS学习:关于js中的冒泡排序和选择排序

第一次写博,技术又菜,可能很多自己理解的东西与他实际的意义相差甚远,若有错误之处请看官们斧正

在这里插入图片描述

1. 冒泡排序

var arr = [8,2,44,7,78,6];
		//一共比较六轮
		for(var i = 0; i < arr.length;i++){
			//每一轮比较的次数
			for(var j = 0; j < arr.length-i-1;j++){
				//判断前后两数是否符合交换条件
				if(arr[j] > arr[j+1]){
					**var a = arr[j+1];		//j+1的值赋给a
					arr[j+1] = arr[j];		//j的值赋给j+1
					arr[j] = a;				//a的值赋给j**
				}
			}
		}
		document.write(arr)

个人理解:

冒泡的排序过程为
第一次比较:8与其他五个数比较,得到8前面的数有3个(2,4,6但此时系统并没有认定2,4,6三个数的排序关系),8后面的数有2个(44,78,同样没有确定这两个数的排序关系)但第一次排序将8的位置确定为第四位

第二次比较:由于确定了8的位置,故2与除8以外的四个数进行四次比较比较,得到2前面没有数,确定2的位置为第一位,2与8之间有4,6两个数,44,78随后

第三次比较:确定44的位数为第五位
以此类推,每一次比较都会确定一个数的位置

关于循环

for(var j = 0; j < arr.length-i-1;j++)

外部循环 i 的循环不会每次都从0开始,j 每次开始一次新的循环会从0开始,而且由于每次循环会确定一个数,所以 j 的循环次数减去已确定数 i 的值,保证不会重复比较

2.选择排序

 var arr2 = [3541,864,652,8486,764];
 
	   for (var i =0; i < arr2.length - 1;i++){
	   //从0开始,且只需要跟自己以外的数比较,所以length-1
		   for (var j = i+1;j < arr2.length;j++){
			   //i和j分别代表两个数,与冒泡的i和j不同
			   if(arr2[i] > arr2[j]){
				   var b = arr2[j];
				   arr2[j] = arr2[i];
				   arr2[i] = b;
			   }
		   }
	   }
	   document.write(arr2)

个人理解:
第一次排序将第0号元素与其他位置的数进行比较,谁比他小就放在这个位置,这个过程是动态的,比如当此位是3541的时候,第一次比较864比他小,864就放在第0号,然后864继续与其他位置进行比较,知道选中某个数,其他数都比这个数大,则确定第0号位数
(铁打的位置流水的元素)

选择排序每次外部循环必定能确定当次循环的第一位数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值