arr = [ 13,15,6,2,12,41,38,32 ];
var e = 0;
for ( var i = 0 ; i < arr.length ; i++ ){
for ( var j = 0 ; j < arr.length ; j++ ){
if ( arr [ j ] > arr [ j +1 ]){
arr [ j ] = arr [ j ] ^ arr [ j + 1 ];
arr [ j + 1 ] = arr [ j ] ^ arr [ j + 1 ];
arr [ j ] = arr [ j ] ^ arr [ j + 1 ];
};
};
};
console.log ( arr );
利用双for循环,当 i = 0 时,第二个for循环会依次比较相邻的两个元素,
如果前面一个元素大于后面一个元素就会把前面一个元素跟后面一个元素对调,
对调的方式有很多总,这里利用的是亦或 ( ^ ) 。
当第二个for循环第一次循环结束后,整个数组的最大元素就会被移动到最后一位。
然后第一个for循环循环第二次,然后再进行一次排序,就会让数组第二大的元素排到
倒数第二取。如此循环下去当第一个for循环结束时,整个数组就按照从小到大的顺序排好了。
时间: 2024-10-09 19:26:31