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));
复制代码

 

posted @   Kai.Ma  阅读(8348)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述
点击右上角即可分享
微信分享提示