猿问

关于冒泡排序

var arr=[2,5,3,1,7,8,78,89];

		function bubbleSort(arr){

			for(var i = 0;i<arr.length;i++){ 
				for(var j=0;j<arr.length-1-i;j++){
					
					if(arr[j]<arr[j+1]){
						var temp = arr[j];
						arr[j] = arr[j+1];
						arr[j+1] = temp;
					}
				}
			}
			return arr;
		}
		console.log(bubbleSort(arr)) ;
j<arr.length-1-i //是减掉之前的索引值为什么还要减1?


慕勒5811226
浏览 1371回答 3
3回答

蓝with黑

你var j=0 改成j=1就不需要-1了。这样更好理解。

MarlboroKay

补充一下:如果 j = i+1  的话,你的判断条件要改一下 if(arr[i]>arr[j]){     var temp = arr[j];     arr[j] = arr[i];     arr[i] = temp;  }要减1是因为,要依次比较。例如:第二个要与第一个比较。但是总长度要减一要不然数组就越界了。望采纳!

MarlboroKay

因为你的j是从0开始的。如果j是i+1的话,就不用减了。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答