冒泡算法的三种JavaScript表示

以前学习冒泡算法,总是弄不清楚n和n-1等一些变量的关系,原因是没有弄明白它的真正含义,今天写了一个冒泡算法的JS小程序,终于弄明白了。


代码如下:

var R1=new Array();
R1[1]=35;
R1[2]=55;
R1[3]=65;
R1[4]=20;
R1[5]=30;
R1[6]=25;
R1[7]=0;
R1[8]=7;
R1[9]=5;
R1[10]=3;
var R2=new Array(35,55,65,20,30,25,0,7,5,3);
var R3=new Array(35,55,65,20,30,25,0,7,5,3);

function BubbleSort1()
{
    var n=R1.length-1;
    for(var i=1;i<n;i++)
    {
        var flag=false;
        for(var j=n-1;j>=i;j--)
        {
            var temp;
            if(R1[j+1]<R1[j])
            {
                temp=R1[j+1];
                R1[j+1]=R1[j];
                R1[j]=temp;
            }
            flag=true;
        }
        if(!flag) return;        
    }
}

function BubbleSort2()
{
    var n=R2.length;
    for(var i=0;i<n-1;i++)
    {
        var flag=false;
        for(var j=n-2;j>=i;j--)
        {
            var temp;
            if(R2[j+1]<R2[j])
            {
                temp=R2[j+1];
                R2[j+1]=R2[j];
                R2[j]=temp;
            }
            flag=true;
        }
        if(!flag) return;        
    }
}
function BubbleSort3()
{
    var n=R3.length;
    for(var i=0;i<n-1;i++)
    {
        var flag=false;
        for(var j=n-1;j>i;j--)
        {
            var temp;
            if(R3[j]<R3[j-1])
            {
                temp=R3[j];
                R3[j]=R3[j-1];
                R3[j-1]=temp;
            }
            flag=true;
        }
        if(!flag) return;        
    }
}

调用它们的HTML文件代码如下:


代码如下:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
        <title>BubbleSort</title>
        <script language="javascript" src="bubblesort.js"></script> 
        <script language="javascript">
           BubbleSort1();
           BubbleSort2();
           BubbleSort3();
           for(var z=1;z<11;z++)
           {
                document.write(R1[z]);

}
           document.write("<br/>");
           for(var k=0;k<10;k++)
           {
                document.write(R2[k]);

}
           document.write("<br/>");
           for(var k=0;k<10;k++)
           {
                document.write(R3[k]);

}
        </script>
    </head>
    <body>
    </body>
</html>

(0)

相关推荐

  • 冒泡算法的三种JavaScript表示

    以前学习冒泡算法,总是弄不清楚n和n-1等一些变量的关系,原因是没有弄明白它的真正含义,今天写了一个冒泡算法的JS小程序,终于弄明白了. 复制代码 代码如下: var R1=new Array(); R1[1]=35; R1[2]=55; R1[3]=65; R1[4]=20; R1[5]=30; R1[6]=25; R1[7]=0; R1[8]=7; R1[9]=5; R1[10]=3; var R2=new Array(35,55,65,20,30,25,0,7,5,3); var R3=n

  • 6种javascript显示当前系统时间代码

    第一种:javascript显示当前系统时间代码 2015年12月1日 12:05:08 星期二 <div id="jnkc"> </div> <script>setInterval("jnkc.innerHTML=new Date().toLocaleString()+' 星期'+'日一二三四五六'.charAt(new Date().getDay());",1000); </script> 第二种:javascri

  • JavaScript事件处理的方式(三种)

    最近这段时间因为每天要修改网站,为网站做特效,所以看了很多的js接触事件,自己只会使用一小部分,有时用的时候也比较混乱,现在系统的整理了一下,特此分享到我们平台供大家参考下! 一.什么是JavaScript事件? 事件(Event)是JavaScript应用跳动的心脏,也是把所有东西粘在一起的胶水,当我们与浏览器中Web页面进行某些类型的交互时,事件就发生了. 事件可能是用户在某些内容上的点击.鼠标经过某个特定元素或按下键盘上的某些按键,事件还可能是Web浏览器中发生的事情,比如说某个Web页面

  • JavaScript三种绑定事件方式及相互之间的区别分析

    本文实例讲述了JavaScript三种绑定事件方式及相互之间的区别.分享给大家供大家参考,具体如下: JavaScript三种绑定事件的方式: 1. <div id="btn" onclick="clickone()"></div> //直接在DOM里绑定事件 <script> function clickone(){ alert("hello"); } </script> 2. <div i

  • 详解js实现线段交点的三种算法

    本文讲的内容都很初级, 主要是面向和我一样的初学者, 所以请各位算法帝们轻拍啊 引用 已知线段1(a,b) 和线段2(c,d) ,其中a b c d为端点, 求线段交点p .(平行或共线视作不相交) 算法一: 求两条线段所在直线的交点, 再判断交点是否在两条线段上. 求直线交点时 我们可通过直线的一般方程 ax+by+c=0 求得(方程中的abc为系数,不是前面提到的端点,另外也可用点斜式方程和斜截式方程,此处暂且不论). 然后根据交点的与线段端点的位置关系来判断交点是否在线段上. 公式如下图:

  • 纯javascript代码实现计算器功能(三种方法)

    今天来分享一下用纯javascript代码编写的一个计算器程序,很多行业都能用到这个程序,例如做装修预算.贷款利率等等. 首先来看一下完成后的效果: 方法一: 具体编写代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns=&q

  • JavaScript遍历数组的三种方法map、forEach与filter实例详解

    本文实例讲述了JavaScript遍历数组的三种方法map.forEach与filter.分享给大家供大家参考,具体如下: 前言 近一段时间,因为项目原因,会经常在前端对数组进行遍历.处理,JS自带的遍历方法有很多种,往往不加留意,就可能导致知识混乱的现象,并且其中还存在一些坑.前端时间在ediary中总结了js原生自带的常用的对数组遍历处理的方法,分别为:map.forEach.filter,在讲解知识点的同时,会类比相识的函数进行对比,这样会有助于思考方法的利与弊. 一.Js自带的map()

  • JavaScript冒泡算法原理与实现方法深入理解

    本文实例讲述了JavaScript冒泡算法.分享给大家供大家参考,具体如下: 在面试中经常会遇到面试官问到冒泡算法.今天总结一下. ###概念 有一组数,依次比较两个相邻的数,如果他们的顺序(如从大到小或从小到大等)错误就把他们交换过来. 我们先假设这一组数是有顺序的,那么我们找出它的规则. 我们按照从小到大的顺序依次交换长方形,得到以下的结果. 第一轮交换结果:CBAD     交换次数:3次 第二轮交换结果:BACD     交换次数:3次 第三轮交换结果:ABCD     交换次数:3次

  • 在JavaScript中查找字符串中最长单词的三种方法(推荐)

    本文基于Free Code Camp基本算法脚本"查找字符串中最长的单词". 在此算法中,我们要查看每个单词并计算每个单词中有多少个字母.然后,比较计数以确定哪个单词的字符最多,并返回最长单词的长度. 在本文中,我将解释三种方法.首先使用FOR循环,其次使用sort()方法,第三次使用reduce()方法. 算法挑战 返回提供的句子中最长单词的长度. 您的回复应该是一个数字. 提供的测试用例 findLongestWord("The quick brown fox jumpe

  • 详解JavaScript中分解数字的三种方法

    本文基于免费代码营基本算法脚本"分解数字" 在数学中,非负整数n的阶乘可能是一个棘手的算法.在本文中,我将解释这种方法,首先使用递归函数,第二种使用而循环,第三种使用以循环. 算法挑战 返回提供的整体的阶乘. 如果整体用字母n表示,则阶乘是所有小于或等于n的正整数的乘积. 阶乘经常用简写符号n!表示! 例如:5!= 1 * 2 * 3 * 4 * 5 = 120 function factorialize(num) { return num; } factorialize(5); 提供

随机推荐