思路:
将数组元素从下标为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)
}
网友评论