冒泡算法的三种&#106avascript表示

算法

以前学习冒泡算法,总是弄不清楚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>
http://www.cnblogs.com/tyrael007/archive/2006/11/20/566375.html

时间: 2024-10-25 21:13:22

冒泡算法的三种&#106avascript表示的相关文章

冒泡算法的三种JavaScript表示

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 A

搜索引擎常用的三种网站排序算法

搜索引擎如何对互联网上那么多的网站进行合适的排名?想必做站长的都想知道这一点,这是通过一套非常繁琐复杂的算法计算出来的,具体的算法想必没有几个人知道,但是最常用的三种算法还是需要大家去了解一下的. 1.词频位置加权排序算法:顾名思义是说从整个网站上的文字的位置上与出现的次数进行排序,先来说一下位置,不同的网站关键词在内容里出现与在标题里面出现时差别非常大的,搜索引擎认为标题能表现出一个网站是干什么的,如果标题里面出现了关键词要远比文章里面出现关键词重要的多的多.这就是现在大家都知道一个网站的标题

从三种算法简要分析外链的重要性

福清SEO对于搜索引擎算法从没有深入研究过,也不提倡去深入研究.笔者认为一般的企业SEOer只需要对算法有所了解,浅尝辄止就可以了. 下文福清SEO列举三种著名搜索引擎算法进行初入门分析,不为别的,就是为证明外链对于网站排名的重要性提供理论依据,希望对大家有帮助. 关于Hits算法 Hits算法是在1997年由康奈尔大学博士提出的,是针对一个页面重要性分析的算法.Hits算法有两个概念,分别是枢纽值与权威值. 枢纽值的含义就是该页面所有导出链接的权值和. 比如:福清SEO博客导出链接20个,这2

三种中文分词算法优劣比较

到目前为止,中文分词包括三种方法:1)基于字符串匹配的分词:2)基于理解的分词:3)基于统计的分词.到目前为止,还无法证明哪一种方法更准确,每种方法都有自己的利弊,有强项也有致命弱点,简单的对比见下表所示: 各种分词方法的优劣对比 分词方法 基于字符串匹配分词 基于理解的分词 基于统计的分词 歧义识别 差 强 强 新词识别 差 强 强 需要词典 需要 不需要 不需要 需要语料库 否 否 是 需要规则库 否 是 否 算法复杂性 容易 很难 一般 技术成熟度 成熟 不成熟 成熟 实施难度 容易 很难

经典算法(2) 直接插入排序的三种实现

直接插入排序(Insertion Sort)的基本思想是:每次将一个待排序的记录,按其关键字大小插入到前面已 经排好序的子序列中的适当位置,直到全部记录插入完成为止. 设数组为a[0-n-1]. 1. 初 始时,a[0]自成1个有序区,无序区为a[1..n-1].令i=1 2. 将a[i]并入当前的有序区a[0-i-1]中形 成a[0-i]的有序区间. 3. i++并重复第二步直到i==n-1.排序完成. 下面给出严格按照定 义书写的代码(由小到大排序): void Insertsort1(in

经典算法(1) 冒泡排序的三种实现

冒泡排序是非常容易理解和实现,,以从小到大排序举例: 设数组长度为N. 1.比较相邻 的前后二个数据,如果前面数据大于后面的数据,就将二个数据交换. 2.这样对数组的第0个数据到 N-1个数据进行一次遍历后,最大的一个数据就"沉"到数组第N-1个位置. 3.N=N-1,如果N不为0就 重复前面二步,否则排序完成. 按照定义很容易写出代码: //冒泡排序1 void BubbleSort1(int a[], int n) { int i, j; for (i = 0; i < n;

算法系列(六)最长公共子序列(LCS)问题(连续子序列)的三种解法

最长公共子序列(LCS)问题有两种方式定义子序列,一种是子序列不要求不连续,一种是子序列 必须连续.上一章介绍了用两种算法解决子序列不要求连续的最终公共子序列问题,本章将介绍要求 子序列必须是连续的情况下如何用算法解决最长公共子序列问题. 仍以上一章的两个字符串 "abcdea"和"aebcda"为例,如果子序列不要求连续,其最长公共子序列为"abcda",如果子序列 要求是连续,则其最长公共子序列应为"bcd".在这种情况下

LinkedList和List在三种简单算法中效率比较

.Net 框架提供了两种List类型,一种是基于链表的LinkedList, 一种是基于数组的List.那么在实际应用中到底采用哪种List,如何取舍呢?本文对两种类型在队列,堆栈和简单插入三种简单算法中的效率进行了一个比较. 首先先让我们来看一下List的初始容量Capacity对List的性能是否有影响. 测试方法:分别设置初始容量为0,64,255,1024. List插入的最大长度为1000,循环1000次,得到如下结果,单位为ms,下同. 算法/初始容量 0 64 255 1024 队

Oracle中三种表连接算法的总结

Oracle有三种表连接技术,分别是嵌套连接.合并连接和哈希连接.以下就是对这三种表连接算法进行了详细的分析介绍,需要的朋友可以参考下   1. 嵌套循环连接 (NESTED LOOP Join)嵌套连接把要处理的数据集分为外循环(驱动数据源)和内循环(被驱动数据源),外循环只执行一次(先执行),内循环执行的次数等于外循环执行的数据集个数. 这种连接的好处是内存使用非常少. 如果驱动数据源有限,且被驱动表在连接列上有相应的索引,则这种连接方式才是高效的. 在OLTP系统上常见到这种连接方式. 2