您的位置:首页 > Web前端 > JavaScript

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

2014-04-29 19:58 253 查看
复习冒泡排序算法,同时自己也写了一个排序算法。

实现效果:



1.自己的算法思想:

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

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

2.冒泡排序算法思想:

数据从最低端到最高端为

a

......
a[0]

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

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

...

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

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

具体代码如下

1.我自己的算法代码

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


2.冒泡排序算法:

//正确的冒泡排序算法
var flag=false;
document.write("<br/>冒泡排序,排序前:<br/>"+s);
for (var i=0;i<s.length-1 ;i++ )
{
for (var j=0;j<s.length-1-i ;j++ )
{
if(s[j]>s[j+1])
{
var temp=s[j];
s[j]=s[j+1];
s[j+1]=temp;
flag=true;
}
}
if(flag)
{
flag=false;
}
else
{
break;//代表一次也没有交换,那么数据完全是顺序的,不需要再执行for循环
}
}
document.write("<br/>冒泡排序,排序后:<br/>"+s);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: