JavaScript数组_冒泡排序(二十八)

268 阅读1分钟

思路:

将数组元素从下标为0与下标为1,arr[i]与arr[i+1]逐次开始两两比较arr.length-r-1,共进行arr.length-1轮,每一轮比较后将排出一位最大值。

先声明外循环轮数 r的区间范围是,应该是从第一次开始,比元素个数arr.length少一次

每轮arr[i]与arr[i+1]两两逐次比较,比较完第一轮后,将把数组最大的元素排在最后

第二轮比较的时候,就不需要再去重复比较第一轮排出的下标为arr.length-1的最大的元素,排的是第二大的元素

因为arr[i]与arr[i+1]做比较,要保证下标i+1是最大下标,所以i<arr.length-2,

根据循环轮数r,与i的规律,每循环一轮,将排好一位元素,且再一轮就不需要重复排已经排好队的,依次类推,每次排好一轮之后,将arr.length-1。

具体代码

//所以将下标i的区间范围在i<arr.length-r
 for(var r=1;r<arr.length;r++){  
//根据循环轮数r,与i的规律,每循环一轮,将排好一位元素,且再一轮就不需要重复排已经排好队的,依次类推,每次排好一轮之后,将arr.length-r
 	for(var i=0;i<arr.length-r;i++){                  
 		if(arr[i]>arr[i+1]){                         
 			                                             
 		var temp;              //满足条件,两两交换位置                           
 		temp=arr[i];            //不满足则跳出后,保持不变继续下一轮
 		arr[i]=arr[i+1];
 		arr[i+1]=temp;			     		
 		}			     			     		
 	}
 }	console.log(arr)	
}

下节预告:字符串_创建_length

参考视频教程:www.3mooc.com/front/couin…