`

冒泡排序和二分查找

 
阅读更多
<script type="text/javascript">
    /**
     * js 冒泡排序
     */
    //var  numArr = [-3,-10,0,32,9,3,23];
    var  numArr = [-1,0,3,23,34,];
    var flag = false;
    for(var i = 0; i < numArr.length -1; i++) { //控制比较多少轮
        document.writeln("比较多少轮:" + (i+1) + "<br />");
        for(var j = 0; j < numArr.length - i -1;j++) {//控制每轮比较的次数
            if(numArr[j] > numArr[j+1]) {
                //交换 //从小到大
                var temp = numArr[j];
                numArr[j] = numArr[j+1];
                numArr[j+1] = temp;
                flag = true;
            }
//if(numArr[j] < numArr[j+1]) { //从大到小 // //交换 // var temp = numArr[j+1]; //numArr[j+1] = numArr[j]; //numArr[j] = temp; //flag = true;
 
        }
        if(flag) {
            flag = false;
        else {
            //禁止循环,这样做的好处:当数组有序时就不要在循环了
            break;
        }
                             
    }
    document.writeln(numArr);
</script>
 
 
<script type="text/javascript">
    /**
     * JS的二分查找
     * 1.注意事项:二分查找必须针对的是有序的数组,不是有序的数组不能使用二分查找法
     * 2.思路:首先找到数组的中间数(midVal),和你要查找的数(findVal)进行比较,如果
     * midVal > findVal ,则说明在数组的左边,就把该数组二分(就只在左边查找)
     */
                
    function binarySearch(arr,findVal,leftIndex,rightIndex) {
        //防止无穷递归
        if(leftIndex > rightIndex) {
            document.writeln("找不到");
            return;
        }
        //找到中间这个值
        var midIndex = Math.floor((leftIndex + rightIndex)/2);
        var midVal = arr[midIndex];
        //比较
        if(midVal > findVal) {
            //在左边查找
            binarySearch(arr,findVal,leftIndex,midIndex - 1);
        else if(midVal < findVal) {
            //在右边查找
            binarySearch(arr,findVal,midIndex+1,rightIndex);
        else {
            document.writeln("找到了,位置为:" + midIndex);
            return;
        }
    }
    var arr = [1,2,5,67,89,90];
    binarySearch(arr,3,0,arr.length -1);
</script>
 
<script type="text/javascript">
    /*数组的简单行列倒置*/
    var arr = [[2,4,6,8],[1,3,5,9],[9,7,4,2]];
            
    //定义一个新的数组
    var arr2 = [];
    //初始化新数组的行数,我认为该数组是规则的,并初始化
    for(var i = 0; i < arr[0].length; i++) {
        arr2[i] = [];
    }
            
    //动态的添加新数据,遍历旧数据
    for(var i=0; i < arr.length; i++) {
        for(var j=0; j < arr[i].length; j++) {
            arr2[j][i] = arr[i][j];
        }
    }
            
    //遍历新数组,显示数据
    for(var i=0; i < arr2.length; i++) {
        for(var j=0; j < arr2[i].length; j++) {
            document.writeln(arr2[i][j] + "&nbsp;");
        }
        document.writeln("<br />");
    }
            
</script>
分享到:
评论

相关推荐

    java选择排序,冒泡排序代码,二分查找

    自己写的java选择排序,冒泡排序代码,二分查找,还有500个小孩手拉手数三退一问题,供初学者参考一下

    JAVA冒泡排序和二分查找的实现

    总结来说,冒泡排序和二分查找都是计算机科学中基础且实用的算法,尽管它们相对简单,但在理解和掌握数据结构与算法的过程中起着至关重要的作用。熟练运用这些算法可以提高编程效率,优化程序性能,是每个程序员必备...

    二分查找算法和冒泡排序算法

    二分查找算法与冒泡排序算法是计算机科学中两种基础且重要的算法,它们在数据处理和数组操作中扮演着至关重要的角色。 首先,我们来详细探讨递归二分查找算法。二分查找,也称为折半查找,是一种在有序数组中查找...

    选择排序、冒泡排序、快速排序、折半查找

    最后,我们讨论折半查找,也称为二分查找。这是一种在有序数组中查找某一特定元素的搜索算法。搜索过程从数组的中间元素开始,如果中间元素正好是目标值,则搜索过程结束;如果目标值大于或小于中间元素,则在数组...

    java冒泡排序、快速排序、二分查找

    本文将对冒泡排序、快速排序、二分查找进行详细的分析和图解。 冒泡排序 冒泡排序是一种简单的排序算法,通过反复地走访要排序的数列,依次比较相邻的两个元素,如果他们的顺序错误就把他们交换过来,直到没有再...

    冒泡排序 二分排序 自己写的

    二分排序是在插入排序的基础上进行优化的,它在插入新元素时,不是直接与前一个元素比较,而是采用二分查找的方法找到合适的位置。具体来说,当需要插入一个元素时,先在已排序的部分中找到这个元素应该插入的位置,...

    js基本算法:冒泡排序,二分查找的简单实例

    本文主要介绍了JavaScript中两种基础但非常重要的算法:冒泡排序和二分查找。这两种算法是计算机科学中解决问题的基础工具,对于理解和优化代码性能至关重要。 首先,我们来看冒泡排序。冒泡排序是一种简单的排序...

    算法 快速排序 冒泡排序 监视哨 折半查找

    **折半查找**,也叫二分查找,是在有序数组中查找特定元素的搜索算法。查找过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于...

    优化冒泡排序和选择排序

    冒泡排序和选择排序是两种基础的排序算法,它们在计算机科学中有着广泛的应用,尤其在教学和理解排序原理时非常关键。这两种算法虽然简单,但在特定情况下可以通过优化提高效率。 首先,我们来详细探讨冒泡排序。...

    PHP 冒泡排序 二分查找 顺序查找 二维数组排序算法函数的详解

    总之,本篇文章详细介绍了PHP中的冒泡排序、二分查找、顺序查找以及二维数组排序算法函数,为需要进行相关操作的读者提供了实用的代码示例和详细说明。通过学习这些基础算法和数据结构处理方法,可以提升编程能力和...

    选择+冒泡+折半查找与排序

    这里我们探讨的是五种常见的算法:简单选择排序、折半插入排序、冒泡排序以及两种查找算法——顺序查找和折半查找。这些算法都是用C++语言实现的。 1. **简单选择排序**: 简单选择排序是一种基础的交换排序方法。...

    从键盘任意输入N个整数 排序后 二叉搜索查询 从键盘输入的某个任意整数的序号

    该程序结合了两种基本的算法——冒泡排序和二分查找,实现了从键盘输入一组整数,排序后查找特定整数的功能。通过这种方式,不仅展示了这两种算法的基本实现方式,还演示了如何将它们结合起来解决实际问题。这对于...

    c语言实现电子辞典的排序查找

    首先,我们需要理解这两个基本的算法——冒泡排序和二分查找。 **冒泡排序**是一种简单的排序算法,它重复地遍历待排序的单词列表,一次比较两个单词,如果它们的顺序错误就把它们交换过来。遍历列表的工作是重复地...

    JAVA冒泡排序及其优化

    冒泡排序与二分查找法的结合可能出现在这样的场景:当序列已排序时,我们可以使用二分查找法来快速定位特定元素。二分查找法的基本思想是将序列分为两半,每次都检查中间元素,根据目标值与中间值的比较结果,缩小...

    数据结构查找、排序、二分查找、折半查找算法

    在这个主题中,我们主要关注查找和排序算法,特别是二分查找(折半查找)算法。这些算法在实际编程中具有广泛应用,包括数据库索引、搜索引擎优化和各种计算问题的解决。 首先,我们来看查找算法。查找是数据结构中...

    JDBC连数据库的JAVA程序,以及冒泡排序,折半查找.rar

    Java代码通常会定义一个方法,接受一个已排序的数组和目标值作为参数,然后使用递归或迭代的方式来执行二分查找。 通过以上内容,你可以深入理解JDBC数据库连接、冒泡排序算法以及折半查找算法在Java编程中的应用。...

    python 实现一种改进的冒泡排序,,和折半查找方法

    python 实现一种改进的冒泡排序,简单选择排序的方法。

    冒泡排序、快速排序和二分法查找的分析 Java

    ### 冒泡排序、快速排序和二分法查找的分析:Java实现 #### 冒泡排序(Bubble Sort) 冒泡排序是一种简单的排序算法,它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。遍历数列...

    使用python实现常用算法,包括冒泡排序/选择排序/插入排序/归并排序/快速排序/堆排序/二分查找/并查集/最小生成树/最小路

    Python中,可以用while循环和切片操作实现二分查找。 8. **并查集**: 并查集是一种用于处理集合之间连接关系的数据结构,常用于求解无向图的连通性。它提供了find和union两个操作,用于查找元素的根节点(代表...

Global site tag (gtag.js) - Google Analytics