目标 : 排序 ;
排序规则 :
- 两两比较,不符合规则就换位;
规则 :是 从小到大 , 还是 从大到小;
- 从小到大 : 左小右大
var arr = [ 2 , 3 , 4 ]
- 从大到小 : 左大右小
var arr = [ 4 , 3 , 2 ]
规则 : 从小到大
var arr = [1.8 1.7 1.9 0.9 1.4 1.2]
比较 : 1.8 和 1.7 不符合规则
比较下标 : 0 1
1.7 1.8 1.9 0.9 1.4 1.2
比较 : 1.8 和 1.9 符合规则;
比较下标 : 1 2
1.7 1.8 1.9 0.9 1.4 1.2
比较 : 1.9 和 0.9 不合规则;
比较下标 : 2 3
1.7 1.8 0.9 1.9 1.4 1.2
比较 : 1.9 和 1.4 不合规则;
比较下标 : 3 4
1.7 1.8 0.9 1.4 1.9 1.2
比较 : 1.9 和 1.1 不合规则;
比较下标 : 4 5
1.7 1.8 0.9 1.4 1.2 1.9
一轮比较之后一定会把最大的放在数组最后方
把最大值放在最后的写法 :
- 比较四次 ;
- 规则是从小到大排列;
var arr = [ 4 , 5 , 1 , 3 , 2 ] ;
数组项换位 :
- 这种数组的换位方式会导致第一次被赋值的数组项数据丢失;
arr[0] = arr[1];
arr[1] = arr[0];
- 解决方案 : 存储一下会被覆盖的数据;
var temp = arr[0];
arr[0] = arr[1];
arr[1] = temp;
var arr = [ 4 , 5 , 1 , 3 , 2 ] ;
//两两比对次数 : 数组项数 - 1 次;
for(var i = 0 ; i < arr.length - 1 - 0 ; i ++){
// 从小到大;
if( arr[i] > arr [ i + 1 ]){
var temp = arr[ i ];
arr[ i ] = arr[ i + 1 ];
arr[ i + 1 ] = temp;
}
}
// 为什么再次 -1 因为我们已经排列好了一个数值了;
// 不需要再次排列了;
for(var i = 0 ; i < arr.length - 1 - 1 ; i ++){
// 从小到大;
if( arr[i] > arr [ i + 1 ]){
var temp = arr[ i ];
arr[ i ] = arr[ i + 1 ];
arr[ i + 1 ] = temp;
}
}
for(var i = 0 ; i < arr.length - 1 - 2 ; i ++){
// 从小到大;
if( arr[i] > arr [ i + 1 ]){
var temp = arr[ i ];
arr[ i ] = arr[ i + 1 ];
arr[ i + 1 ] = temp;
}
}
for(var i = 0 ; i < arr.length - 1 - 3 ; i ++){
// 从小到大;
if( arr[i] > arr [ i + 1 ]){
var temp = arr[ i ];
arr[ i ] = arr[ i + 1 ];
arr[ i + 1 ] = temp;
}
}
console.log( arr );
for(var k = 0 ; k < arr.length - 1 ; k ++){
for(var i = 0 ; i < arr.length - 1 - k ; i ++){
// 从小到大;
if( arr[i] > arr [ i + 1 ]){
var temp = arr[ i ];
arr[ i ] = arr[ i + 1 ];
arr[ i + 1 ] = temp;
}
}
}
console.log( arr);
var arr = [ 4 , 5 , 1 , 3 , 2 ] ;
for(var k = 0 ; k < arr.length - 1 ; k ++){
for(var i = 0 ; i < arr.length - 1 - k ; i ++){
// 从小到大;
if( arr[i] > arr [ i + 1 ]){
var temp = arr[ i ];
arr[ i ] = arr[ i + 1 ];
arr[ i + 1 ] = temp;
}
}
}
console.log( arr);
// 【双层for循环 一层减一次 里层减外层 变量相交换】