JavaScript中数组的二分查找、冒泡排序、转置

二分查找

前提:该数组是有序的,如果不是有序的,则不能使用二分查找

 

复制代码
//定义一个数组
        arr = [1, 6, 8, 9, 45, 67, 89];

        function find(arr, findVal, leftIndex, rightIndex) {
            // 防止无穷递归
            if (arr[leftIndex] > arr[rightIndex]) {
                document.writeln("找不到");
                return;
            }
            //找中间值
            //floor()对一个数进行下舍入
            var midIndex = Math.floor((leftIndex + rightIndex) / 2);
            var midValue = arr[midIndex];
            //递归 
            if (midValue > findVal) {
                find(arr, findVal, leftIndex, midIndex - 1);
            } else if (midValue < findVal) {
                find(arr, findVal, midIndex + 1, rightIndex);
            } else {
                document.writeln(midIndex);
                return;
            }

        }

        // 测试
        find(arr, 45, 0, arr.length - 1);
    </script>
复制代码

 

冒泡排序

原理:相邻的两个元素之间进行比较

复制代码
  <script type="text/javascript" language="javascript">
        //冒泡排序
        var arr = [5, 0, -56, 900, 12, 9];
        var temp = 0;
        for (var i = 0; i < arr.length - 1; i++) {
            for (var j = 0; j < arr.length - i; j++) {
                if (arr[j] > arr[j + 1]) {
                    temp = arr[j + 1];
                    arr[j + 1] = arr[j];
                    arr[j] = temp;
                }
            }
        }
        console.log(arr);
    </script>
复制代码

 

数组转置

数组转置就是行列互换

复制代码
<script type="text/javascript" language="javascript">
         // 转置,就是行列互换
        var arr = [
            [2, 4, 6, 8],
            [8, 9, 0, -1],
            [9, 6, 2, 3]
        ];
        var arr_new = [];
        
        //初始化新数组的元素,确定一下新数组一共有多少行
        for(var i=0;i<arr[0].length;i++){
            arr_new[i]=[0];
        }

        //转置
        for(var i=0;i<arr.length;i++){
            //遍历每个具体的值
            for(var j=0;j<arr[i].length;j++){
                arr_new[j][i]=arr[i][j];
            }
        }

        //输出新数组
        for(var i=0;i<arr_new.length;i++){
            for(var j=0;j<arr_new[i].length;j++){
                document.writeln(arr_new[i][j]+"&nbsp");
            }
            document.writeln("<br/>");
        }
    </script>
复制代码

 

posted @   豆芽花花儿酱  阅读(157)  评论(0编辑  收藏  举报
编辑推荐:
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· 2 本地部署DeepSeek模型构建本地知识库+联网搜索详细步骤
历史上的今天:
2017-06-10 Linux-基本操作内容
点击右上角即可分享
微信分享提示