• js简单排序


    js排序在日常中用的比较少,一般都是后台直接从数据库获取数据的的时候就排好了,不过也可以了解一下基础的排序。

    1、冒泡排序,简单说就是让每个数与其他数依次比对,一般是从第一个数开始的,特点是简单容易理解,缺点是适合数量较少的排序,性能一般。

        var times=0;
        arr=[5,2,4,1,7,3,8,6,9,0];
        var bubbleSort=function(arr){
            for(var i=0;i<arr.length-1;i++){
                for(var j=i+1;j<arr.length;j++){
                    if(arr[i]>arr[j]){//如果前面的数据比后面的大就交换
                        var temp=arr[i];
                        arr[i]=arr[j];
                        arr[j]=temp;
                    }
                    console.log(""+(++times)+"次排序后:"+arr);
                }
            }
            return arr;
        };
        console.log("The result is:"+bubbleSort(arr));

    2、插入法排序,就是先假设第一个已近排好了序,然后依次往后对每个值与之前的进行对比找到合适的位置插入。循环次数少,适合少量的排序。

        arry=[5,2,4,1,7,3,8,6,9,0];
        var times=0;
        var insertSort=function(arr){
            for(var i =1,j;i<arr.length;i++){
                j=i;
                v=arr[j];
                while(arr[j-1]>v){
                    arr[j] = arr[j-1];
                    j--;
                    if(j == 0){
                        break;
                    }
                    console.log(1)
                }
                arr[j]=v;
                console.log(""+(++times)+"次排序"+arr)
    
            }
            return arr;
        }
        console.log(insertSort(arry));

    3、快速排序,主要就是循环取其中间设置的基准值进行比较,这个性能比较高,循环的次数少,但比第一个理解上稍微有些难度。

        arr=[5,2,4,1,7,3,8,6,9,0];
    
        var times=0;
        var quickSort=function(arr){
            //如果数组长度小于等于1无需判断直接返回即可
            if(arr.length<=1){
                return arr;
            }
            console.log("现在的数组"+arr)
            var midIndex=Math.floor(arr.length/2);//取基准点
            var midIndexVal=arr.splice(midIndex,1);//取基准点的值,splice(index,1)函数可以返回数组中被删除的那个数arr[index+1]
    
            console.log("取基准点的值"+midIndexVal)
            console.log("基中"+midIndex)
            var left=[];//存放比基准点小的数组
            var right=[];//存放比基准点大的数组
            //遍历数组,进行判断分配
            for(var i=0;i<arr.length;i++){
                if(arr[i]<midIndexVal){
                    left.push(arr[i]);//比基准点小的放在左边数组
                }
                else{
                    right.push(arr[i]);//比基准点大的放在右边数组
                }
                console.log(""+(++times)+"次排序后:"+arr);
            }
            //递归执行以上操作,对左右两个数组进行操作,直到数组长度为<=1;
            return quickSort(left).concat(midIndexVal,quickSort(right));
        };
        console.log(quickSort(arr)); 

    4、js封装的sort(),不过这是根据字符编码的顺序进行排序,所以要对数组进行排序要传入相应的参数(必须是函数)

        var arry1=[1,5,6,4,8,4,5,5,40,4,50,7,4,55,6,5,444,5,4,4,2,4,5,7,8,8];
        function sortNumber(a,b)
        {
            return a - b;
            console.log(a-b)
        }
        console.log(JSON.stringify(arry1.sort(sortNumber)))//[1,2,4,4,4,4,4,4,4,5,5,5,5,5,5,6,6,7,7,8,8,8,40,50,55,444]

    a-b如果大于1则认为a在b后,小于1则认为a在b前面,等于的话就是返回0了,这个就是定义的排序规则,如果从大到小b-a就可以了。据了解 sort() 数量小于等于22的数组使用插入排序,大于22的数组使用快速排序(没有验证)

  • 相关阅读:
    int **指针问题
    用 _tcscmp 替代 strcmp 或 wcscmp
    C++经典面试算法题
    目标世界上最小的Linux系统—ttylinux体验
    im-switch -s ibus错误:Error: no configuration file "ibus" exists.
    Ruby环境搭建
    emulator: ERROR: x86 emulation currently requires hardware acceleration!Please ensure Intel HAXM is properly installed and usable.CPU acceleration status: HAX kernel module is not installed!
    POJ 1007 DNA Sorting
    POJ 1002 487-3279
    Ubuntu Android adb调试无法识别设备 -- List of devices attached ???????????? no permissions
  • 原文地址:https://www.cnblogs.com/yuanzhiguo/p/7600427.html
Copyright © 2020-2023  润新知