zoukankan      html  css  js  c++  java
  • js常用的算法整理

    1.二分查找法

     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;
      }
    

    2.冒泡排序法

    第一次遍历出最大的数,放到最后,依次类推....

    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;
            }
        }
    }
    function swap(arr,i,j){//用于交换数据
        var temp = arr[i];
        arr[i] = arr[j];
        arr[j] = temp; 
        return arr;
    }
    var arr1 = [3,2,4,6,1,9]
    bubblesort(arr1)
    console.log(arr1)//[1,2,3,4,6,9]
    

    3.选择排序法

    每次一次遍历出最小的,存放于A[k]中

    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) {
               var temp = A[k];
               A[k] = A[i];
               A[i] = temp;
            }
        }
        return A;
    }
    var A = [2,4,1,3,8,4];
    selectionSort(A) //[1, 2, 3, 4, 4, 8]
    

    4.插入排序法

    function inserSort(A) {
        for(var i  = 0;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;
        }
        }
       
    }
    var A=[0,1,3,2,4,9];
    inserSort(A);
    console.log(A)
    

    5.插排序法(用的比较少)

    function inserSort(A) {
        for(var i  = 0;i<A.length;i++){
            var x =A[i]; //x=1
            for(var j = i-1;j>=0&&A[j]>x;j--) {
                A[j+1] = A[j];
                A[1]=A[0]
            }
            if(A[j+1] !=x) {
            A[j+1] =x;
        }
    }
       
    }
    var A=[2,1,3,2,4,9];
    inserSort(A);
    console.log(A)//[1, 2, 2, 3, 4, 9]
    

    6.递归找最大值

    function findMax(A,i) {
        if(i==0) {
            return A[0];
        }
        var x = A[i-1];
        var y = findMax(A,i -1);
        return y>x ? y:x;
    }
    var A=[2,4,3,8,5,3]
    var m=findMax(A,A.length);//8
    

     

      

      

  • 相关阅读:
    数据管理(五)
    (译文)Gentoo的前世今生 part3 (完成版※)
    数据管理(三)
    数据管理(一)
    数据管理(七)
    (译文)Gentoo的前世今生 PART 1(完成版)
    数据管理(六)
    数据管理(四)
    SQL Server补丁版本的检查和安装过程中常见问题
    3938 Portal(离线型的并查集)
  • 原文地址:https://www.cnblogs.com/leonel/p/6653655.html
Copyright © 2011-2022 走看看