js算法入门(1)--简朴排序

1.媒介

从上大学最先,算法与数据结构这东西我是一向心心念念,怎样又懒又蠢,这么基本科目一向没啥效果。然则如鲠在喉,假如再不学的话能够就成为一块心病了。所以虽然和如今事情没啥关联但照样决议学一下基本,聊以自慰。

2.排序

2.1简朴挑选排序

关于一个有n个元素的数组a(下标从0最先),举行n趟操纵,每趟从待排部份[i,n)中i挑选i最小的元素,令其与a[i]举行交互,总复杂度为O(n^2):

    var a = [5, 2, 4, 6, 3, 1];
    //select sort
    function selectSort(a) {
        var n = a.length;
        for (var i = 0; i < n; i++) {//n次操纵,即所谓的趟
            var k = i;//设最小值的下标为i
            console.log(i)
            for (var j = i + 1; j < n; j++) {//每趟待排序部份
                if (a[j] < a[k]) {//若求倒序则改成>
                    k = j;//更新最小值的下标
                }
            }
            //交流
            var temp = a[i];
            a[i] = a[k];
            a[k] = temp;
        }
        return a;
    }
    console.log(selectSort(a));

2.2简朴插进去排序

这里的插进去排序指的是直接插进去排序。插进去排序的历程就是将待插元素一个个插进去初始有序部份的历程。而直接插进去排序就是把未排序的序列里的第一名数与前面的有序数列举行比较,通常比它大的都向后挪动一名,直到找到准确的位置举行交流。

function insertSort(a){
        var n=a.length;
        for(var i =1;i<n;i++){//从序列第二个值最先,比较n-1趟
            var temp = a[i];//保留要举行排序的值
            var j=i;
            while(j>0&&temp<a[j-1]){//和前一个值举行比较
                a[j]=a[j-1];//若小于前一个值,则将前一个值向后挪动一个位置
                j--;//这时候前一个值的位置空出来了,下次交流则在前一个值的位置上举行
            }
           a[j]=temp;//将缓存的举行排序的值放到准确的位置

        }
        return a;
    }
    console.dir(insertSort(a));

实在很像倒着来的冒泡排序

参考书目

《算法笔记》

    原文作者:梦中的贝壳
    原文地址: https://segmentfault.com/a/1190000014077236
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞