zoukankan      html  css  js  c++  java
  • Javascript实现排序(5种)、二分查找、二叉树查找算法

    <script type="text/javascript">
            
    var a;
            a 
    = [66531154321];
            
    /*冒泡排序*/
            (
    function maopaopaixu() {
                
    for (var i = 0; i < a.length - 1; i++) {//比较的次数是length-1
                    for (var j = 0; j < a.length - 1 - i; j++) {
                        
    if (a[j] > a[j + 1]) {
                            [a[j],
    a[j + 1]] = [a[j + 1],a[j]];
                        }
                    }
                }
                console.log(a);
            })();

            a 
    = [66531154321];
            
    /*选择排序*/
            (
    function xuanzepaixu() {
                
    var min/*最小项的索引*/, tmp;
                
    for (var out = 0; out < a.length - 1; out++) {//比较的次数是length-1
                    min = out;
                    
    for (var inner = out + 1; inner < a.length; inner++) {//这里是a.length,不是a.lenght-1,因为后者会导致右数第2项没法参与排序。
                        if (a[inner] < a[min]) {
                            min 
    = inner;
                        }
                        
    //将最小的项移动到左侧
                        tmp = a[out];
                        a[out] 
    = a[min]
                        a[min] 
    = tmp;
                    }
                }
                console.log(a);
            })();

            a 
    = [66531154321];
            
    /*插入排序*/
            (
    function charupaixu() {
                
    for (var out = 1; out < a.length; out++) {
                    
    var tmp = a[out];
                    
    var inner = out;
                    
    while (a[inner - 1> tmp) {
                        a[inner] 
    = a[inner - 1];
                        
    --inner;
                    }
                    a[inner] 
    = tmp;
                }
                console.log(a);
            })();
        
    </script>

    二分查找

          function binarySearch(arr = [], tar, low = 0, high = arr.length - 1) {
            if (arr.indexOf(tar)==-1) return tar + " not in arr!";
            let mid = Math.floor((low + high) / 2);
            if (arr[mid] == tar) {
              return "got " + tar + " at index=" + mid + "!";
            } else if (tar > arr[mid]) {
              return binarySearch(arr, tar, mid + 1 < high ? mid + 1 : high, high);
            } else if (tar < arr[mid]) {
              return binarySearch(arr, tar, low, mid - 1);
            }
            return tar + " not in arr!";
          }
          console.log(binarySearch([1, 2, 3, 4, 5], 4));
  • 相关阅读:
    【算法】二分图的判定
    【模板】并查集 两种路径压缩写法(类模板和函数模板)
    【模板】堆的结构
    新疆大学OJ(ACM) 1099: 数列有序!
    新疆大学OJ(ACM) 1047: string 字符串排序
    新疆大学(新大)OJ xju 1010: 四个年级 C++ STL map 将4层循环优化成2层循环可解
    新疆大学(新大)OJ xju 1009: 一带一路 prim求最短路径+O(n)素数筛选
    新疆大学(新大)OJ xju 1006: 比赛排名 第二类斯特林数+阶乘
    【算法】第二类斯特林数Stirling
    【复习资料】编译原理中:短语,直接短语,句柄
  • 原文地址:https://www.cnblogs.com/kaima/p/1558615.html
Copyright © 2011-2022 走看看