JavaScript排序算法(一)——挑选和插入排序

一. 挑选排序

1.基本思想

找到数组最小的元素,将它和数组红第一个元素交流位置,接下来,在剩下的元素中找到最小的元素,将它与数组的第二个元素交流位置,来去云云,直到将全部数组排序。基本点就是不断地挑选盈余元素当中的最小者。

2.特性

  1. 运转时候和输入无关。
    关于长度为N的数组,挑选排序须要约莫N2/2次比较和N次交流

  2. 数据挪动是起码的
    交流次数和数组的大小是线性关系。

运用javascript完成的结果

function select(array){
    var len=array.length;
    for(var i=0;i<len-1;i++){  //这里之所以是len-1,是因为到最后两个元素,交流位置,全部数组就已排好序了。
        var minnum=array[i];
        for(var j=i+1;j<len;j++){ // j=i+1是把与本身比较的状况给省略掉
            if(array[j]<minnum){
              var c;
              c=minnum;
              minnum=array[j];    //交流两个值
              array[j]=c;
            }
        }
        array[i]=minnum;      
    }
    return array;

}

二、插进去排序

1.基本思想

将一个元素插进去到别的已有序的牌中的恰当位置,因而其他一切元素在插进去之前都向右挪动一名,为新元素腾出空间。

2.特性

插进去排序所需的时候取决于输入中元素的初始递次,一个有序的序列比随机递次的序列消费的时候更少。
关于随进分列的长度为N且主键不反复的数组,最坏状况下须要输入N2/2

function insert(array) {
        for (var i = 1; i < array.length; i++) {
            var key = array[i];
            var j = i - 1;
            while (j >= 0 && array[j] > key) {
                array[j + 1] = array[j];
                j--;
            }
            array[j + 1] = key;
        }
        return array;
}
    原文作者:hopeCoder
    原文地址: https://segmentfault.com/a/1190000006208245
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞