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);