javascript学习5-练习之2冒泡排序算法

复习冒泡排序算法,同时自己也写了一个排序算法。

实现效果:

1.自己的算法思想:

数组中数据取第一个为默认最小,依次和后面每个数据比较,只要有比其小的就交换直至找出最小的。

然后将第二个数据与其后面所有数据比较,找出最小,依次重复

2.冒泡排序算法思想:

数据从最低端到最高端为

a[n]

......
a[0]

第一轮:将a[0]与a[1]比较,高者上,然后依次比较a[1]和a[2]....a[n-1]和a[n]每次将大的往上冒

第二轮: 将a[0]与a[1]比较,高者上,然后依次比较a[1]和a[2]...a[n-2]和a[n-1]每次大的往上冒,注意此时第一轮最大的已经排出来,故不需要将[n-1]与[n]相比较

...

第n轮:将a[0]与a[1]比较高者往上冒。然后 a[1]与a[2]比较,大的往上冒。

        此处前面已经排出来了n-1个最大的,一共n+1个数,故此时只有a[0]和a[1]两个没有比出最大的了。到第n轮,数据比较完成。

具体代码如下

1.我自己的算法代码

 1 //自己的排序算法
 2 var s=[1,2,3,5,77,22,11,14,12,24];
 3 //排序前
 4 document.write("<br/>自己的排序,排序前:<br/>"+s);
 5 for (var i=0;i<s.length-1 ;i++ )
 6 {
 7     for (var j=i+1;j<s.length;j++ )
 8     {
 9         if(s[i]>s[j])
10         {
11             var temp=s[j];
12             s[j]=s[i];
13             s[i]=temp;
14         }
15     }
16 }
17 //排序后
18 document.write("<br/>自己的排序算法,排序后:<br/>"+s);

2.冒泡排序算法:

 1 //正确的冒泡排序算法
 2 var flag=false;
 3 document.write("<br/>冒泡排序,排序前:<br/>"+s);
 4 for (var i=0;i<s.length-1 ;i++ )
 5 {
 6     for (var j=0;j<s.length-1-i ;j++ )
 7     {
 8         if(s[j]>s[j+1])
 9         {
10             var temp=s[j];
11             s[j]=s[j+1];
12             s[j+1]=temp;
13             flag=true;
14         }
15     }
16     if(flag)
17     {
18         flag=false;
19     }
20     else
21     {
22         break;//代表一次也没有交换,那么数据完全是顺序的,不需要再执行for循环
23     }
24 }
25 document.write("<br/>冒泡排序,排序后:<br/>"+s);

 

posted @ 2014-04-29 19:58  testForever  阅读(282)  评论(0编辑  收藏  举报