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
    

     

      

      

  • 相关阅读:
    青云黄允松:2016年是云计算市场最关键的一年
    知道创宇CTO杨冀龙:网络安全人才决定行业格局
    su 与 su
    如何进入单用户模式(CentOS6.9)
    在虚拟机中还原GHO镜像系统
    安装CentOS 7 文字版
    把typora改为微软雅黑+Consolas
    使用python操作文件实现购物车程序
    使用python操作json文本文件
    资源下载网址集合
  • 原文地址:https://www.cnblogs.com/leonel/p/6653655.html
Copyright © 2011-2022 走看看