排序

一、原理

/*
 5,4,3,2,1  从小到大
 
 第一趟排序结果    4,3,2,1,5
 第1次
 4,5,3,2,1
 第2次
 4,3,5,2,1
 第3次
 4,3,2,5,1
 第4次
 4,3,2,1,5
            
 第二趟排序  3,2,1,4,5 
 第1次
 3,4,2,1,5
 第2次
 3,2,4,1,5
 第3次
 3,2,1,4,5  //4和5不需要再比较

 第三趟排序  2,1,3,4,5
 第1次
 2,3,1,4,5
 第2次
 2,1,3,4,5

 第三趟排序  1,2,3,4,5
 第1次
 1,2,3,4,5

*/

二、排序类型

1、冒泡排序

①数组冒泡排序

var array= [5, 4, 3, 2, 1];
for (var i = 0; i < array.length-1; i++){          //外层是给你循环多少次
    for (var j = 0; j < array.length - 1; j++){    //内层循环
        if(array[j]>array[j+1]){ //相邻的两个值进行交换,交换时写中间变量temp
             var temp=array[j]; //定义temp是最大值array[j] 
             array[j] = array[j + 1]; //把后一位赋值给前一位,进行交换
             array[j + 1] = temp; //把后一位赋给前一位,进行交换
             //console.log(array);
        }
       //console.log(array)
     }
     console.log('========='+array)    
}
//console.log(array)

②数组冒泡排序

var arr = [
                ["北京", 80],
                ["上海", 50],
                ["福州", 10],
                ["广州", 50],
                ["成都", 70],
                ["西安", 100]
            ];
            var t;
            for(var i = 0; i < arr.length; i++) {
                for(var j = 0; j < arr.length - 1; j++) {
                    if(arr[j][1] > arr[j + 1][1]) {
                        t = arr[j][1];
                        arr[j][1] = arr[j + 1][1];
                        arr[j + 1][1] = t;
                    }
                }
            }
            console.log(arr); //["福州",10],["上海",50],["广州",50],["成都",70],["北京",80],["西安",100]

③字符串冒泡排序

    //把字符串转成数组,再排序
       var text = "5,4,3,2,1";
       var array = text.split(",");
        for (var i = 0; i < array.length-1; i++){          //外层循环是给你循环多少次
            for (var j = 0; j < array.length - 1; j++){    //内层循环
                    if(array[j]>array[j+1]){ //相邻的两个值进行交换,交换时写中间变量temp
                        var temp=array[j]; //定义temp是最大值array[j] 
                        array[j] = array[j + 1]; //把后一位赋值给前一位,进行交换
                        array[j + 1] = temp; //把后一位赋给前一位,进行交换
//                        console.log(array);
                    }
                    console.log(array)
                }
            console.log('========='+array)    
        }
    //    console.log(array)

2、short排序

①数组

            //排序函数
/*            function sortNumber(a, b) {
                return a - b
            }
            var arr = [10, 20, 1, 2];
            document.write(arr.sort()+'</br>');//1,10,2,20   按字母顺序进行排序  one ,ten ,two ,twenty 
            document.write(arr.sort(sortNumber))//1,2,10,20
*/
           /*
            * 若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。
                                     若 a 等于 b,则返回 0。
                                     若 a 大于 b,则返回一个大于 0 的值。
            */
            var arr = [10, 20, 1, 2];
            arr.sort(function(a, b) {
                if(a < b) {
                    return -1;
                }
                if(a > b) {
                    return 1;
                }
                return 0;
            })
            console.log(arr); //[1, 2, 10, 20]

②二维数组

var arr = [
                ["北京", 80],
                ["上海", 50],
                ["福州", 10],
                ["广州", 50],
                ["成都", 70],
                ["西安", 100],
            ];
            arr.sort(function(a, b) {
                if(a[1] < b[1]) {
                    return -1;
                }
                if(a[1] > b[1]) {
                    return 1;
                }
                return 0;
            })
            console.log(arr); //["福州",10],["上海",50],["广州",50],["成都",70],["北京",80],["西安",100]
原文地址:https://www.cnblogs.com/sayidf/p/7590298.html