复习冒泡排序算法,同时自己也写了一个排序算法。
实现效果:
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);
javascript学习5-练习之2冒泡排序算法,码迷,mamicode.com
时间: 2024-11-17 21:13:28