zoukankan      html  css  js  c++  java
  • 排序

    一、原理

    /*
     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]
  • 相关阅读:
    apue学习笔记(第十二章 线程控制)
    apue学习笔记(第十一章 线程)
    apue学习笔记(第十章 信号)
    apue学习笔记(第九章 进程关系)
    apue学习笔记(第八章 进程控制)
    apue学习笔记(第七章 进程环境)
    apue学习笔记(第六章 系统数据文件和信息)
    apue学习笔记(第五章 标准I/O)
    apue学习笔记(第四章 文件和目录)
    apue学习笔记(第三章 文件I/O)
  • 原文地址:https://www.cnblogs.com/sayidf/p/7590298.html
Copyright © 2011-2022 走看看