JavaScript基础算法

来源:互联网 发布:mirror软件官网 编辑:程序博客网 时间:2024/06/08 09:06

       最近抽空看了看基础算法,用JavaScript实现的,在这里做个笔记,以便以后查阅。。。老规矩直接上代码。。

     

/** 入门级算法-线性查找-时间复杂度O(n)--相当于算法界中的HelloWorld *  @param Array *  @param number *  **/     function linearSearch(A, x)   {    for (var i = 0; i < A.length; i++)     {        if (A[i] == x)         {            return i;        }    }    return -1;}      /** 二分查找(又称折半查找) - 适用于已排好序的线性结构 - 时间复杂度O(logN)     * @param Array     * @param number     *      * */  function binarySearch(A, x)  {    var low = 0, high = A.length - 1;    while (low <= high)     {        var mid = Math.floor((low + high) / 2);//下取整              if (x == A[mid])         {            return mid;        }        if (x < A[mid])         {            high = mid - 1;        }        else         {            low = mid + 1;        }    }    return -1;    }         /***冒泡排序 -- 时间复杂度O(n^2)        *         * @param Array        */function bubbleSort(A) {    for (var i = 0; i < A.length; i++)     {        var sorted = true;    //注意:内循环是倒着来的        for (var j = A.length - 1; j > i;j--)         {            if (A[j] < A[j - 1])             {                swap(A, j, j - 1);                sorted = false;                               }        }        if (sorted)         {            return;        }    }}  /***  *   选择排序 -- 时间复杂度O(n^2)  *   思路:找到最小值的下标记下来,再交换  *   * */  function selectionSort(A)   {  for(var i = 0 ; i<A.length-1; i++)  {  var k = i;  for( var j = i+1 ; j<A.length ; j++)  {  if(A[j]<A[k])  {  k=j;  }  }  if(k!=i)  {  A[k] = A[k] + A[i];  A[i] = A[k] - A[i];  A[k] = A[k] - A[i];  }  }  return A;  }            /***     *    插入排序     *    假定当前元素之前的元素已经排好序,先把自己的位置空出来, *    然后前面比自己大的元素依次向后移,直到空出一个"坑",   *    然后把目标元素插入"坑"中     *      * */function insertSort(A) {    for (var i = 1; i < A.length; i++)     {        var x = A[i];        for (var j = i - 1; j >= 0&& A[j] > x; j--)        {            A[j + 1] = A[j];        }        if (A[j + 1] != x)         {            A[j + 1] = x;        }    }    return A;}


       这几个基础的都还是比较简单,等过段时间再看看其他的算法。。。

0 0
原创粉丝点击