标签:
原理:
临近的数字两两进行比较,按照从小到大或者从大到小的顺序进行交换;
如题:var arr = [1,2,3,4,5,6],要将数组的排列变为大到小,
那么就需要:先将最小的数字交换到最后一位,
然后再从头开始进行两两比较、交换,直到完成排序。
第一步:1,2,3,4,5,6;
第一趟交换:
第一次两两比较:1<2 ; 交换:2,1,3,4,5,6;
第二次两两比较:1<3 ; 交换:2,3,1,4,5,6;
第三次两两比较:1<4 ; 交换:2,3,4,1,5,6;
第四次两两比较:1<5 ; 交换:2,3,4,5,1,6;
第五次两两比较:1<5 ; 交换:2,3,4,5,6,1;
第二步:2,3,4,5,6,1;
第二趟交换:
第一次两两比较:2<3 ; 交换:3,2,4,5,6,1;
第二次两两比较:2<4 ; 交换:3,4,2,5,6,1;
第三次两两比较:2<5 ; 交换:3,4,5,2,6,1;
第四次两两比较:2<6 ; 交换:3,4,5,6,2,1;
第三步:3,4,5,6,2,1;
第三趟交换:
第一次两两比较:3<4 ; 交换:4,3,5,6,2,1;
第二次两两比较:3<5 ; 交换:4,5,3,6,2,1;
第三次两两比较:3<6 ; 交换:4,5,6,3,2,1;
第四步:4,5,6,3,2,1;
第四趟交换:
第一次两两比较:4<5 ; 交换:5,4,6,3,2,1;
第二次两两比较:4<6 ; 交换:5,6,4,3,2,1;
第五步:5,6,4,3,2,1;
第五趟交换:
第一次两两比较:5<6 ; 交换:6,5,4,3,2,1;
最终结果为:6,5,4,3,2,1
var array = [1,2,3,4,5,6];
var temp = 0;
for (var i = 0; i < array.length; i++){
for (var j = 0; j < array.length - i; j++){
if (array[j] < array[j + 1]){
temp = array[j];
array[j] = array[j+1];
array[j+1] = temp;
}
}
}
console.log(array);
标签:
原文地址:http://www.cnblogs.com/qingshixiaodao/p/5429133.html