结构-行为-样式-Js排序算法之 直接插入排序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了结构-行为-样式-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+"";

 

以上是关于结构-行为-样式-Js排序算法之 直接插入排序的主要内容,如果未能解决你的问题,请参考以下文章

数据结构与算法之排序算法:插入排序

数据结构和算法基础之直接插入排序

数据结构之排序算法Java实现—— 插入类排序之折半插入排序算法

经典排序算法 ——直接插入排序

数据结构和算法(十三)排序算法之插入排序

数据结构与算法 通俗易懂讲解 直接插入排序