将数组元素从下标为0与下标为1,arr[i]与arr[i+1]逐次开始两两比较arr.length-r-1,共进行arr.length-1轮,每一轮比较后将排出一位最大值。数组
先声明外循环轮数 r的区间范围是,应该是从第一次开始,比元素个数arr.length少一次bash
每轮arr[i]与arr[i+1]两两逐次比较,比较完第一轮后,将把数组最大的元素排在最后markdown
第二轮比较的时候,就不须要再去重复比较第一轮排出的下标为arr.length-1的最大的元素,排的是第二大的元素oop
由于arr[i]与arr[i+1]作比较,要保证下标i+1是最大下标,因此i<arr.length-2,ui
根据循环轮数r,与i的规律,每循环一轮,将排好一位元素,且再一轮就不须要重复排已经排好队的,依次类推,每次排好一轮以后,将arr.length-1。spa
具体代码:code
//因此将下标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) }复制代码