zoukankan      html  css  js  c++  java
  • 结构-行为-样式-Js排序算法之 直接插入排序

    最新因工作原因需要接触到算法,之前学习C++的时候有接触过算法,Javascript中实现算法其实也是大同小异。下面我讲下第一个实现的排序算法--直接插入排序。基本实现思路:假定一个数组中前n(n>=2)个值已经排序好了,那我们就从第n+1个与前面进行比较,当  a[n+1] > a [i] && a[n+1] < a[i-1] 的时候则进行插入,以此类推。

    var arr = [23,85,61,37,55,12,63,12,99,39,70,21];
    
    function InsertDirect(arr){
        //前两个排序
        if(arr[0] > arr[1]){
            var temp = arr[0];
            arr[0] = arr[1];
            arr[1] = temp;
        }
        //数组过短,就返回。
        if(arr.length <=2)return;
        //执行插入排序(自已实现)
        /*for(var i=1; i<arr.length;i++){
            //比前面都大,就返回 
            if(arr[i] >= arr[i-1])continue;
            for(var j=0;j<=i-1;j++){
                //执行插入
                if((j == 0 && arr[i] <= arr[j]) || (arr[i] <= arr[j] && arr[i] >= arr[j-1])){
                    var k = j-1<0 ? 0:j;
                    arr.splice(k,0,arr[i]);
                    arr.splice(i+1,1);
                    break;
                }
            }
        }*/
        //标准实现
        for(var i=0; i<arr.length;i++){
            var temp = arr[i];
            var j = i-1;
            //比前面都大,就返回 
            if(arr[i] >= arr[i-1])continue;
            for(;j>=0&&temp<arr[j];j--){
               arr[j+1] = arr[j];
            }
            arr[j+1] = temp;
        }
        return arr;
    }
    var arrs = InsertDirect(arr);
    document.getElementById("app").innerHTML = arrs+"";
    Code is read far more than it's written
  • 相关阅读:
    ntp时间服务器
    locate 命令
    身份验证器
    centos 6 mysql源码安装
    简单上传下载命令lrzsz
    iptables记录日志
    iptables日志探秘
    du 命令
    Codeforces 1097F Alex and a TV Show (莫比乌斯反演)
    线段树教做人系列(1)HDU4967 Handling the Past
  • 原文地址:https://www.cnblogs.com/ChickenTang/p/6111648.html
Copyright © 2011-2022 走看看