about冒泡的那些事

看了 http://www.cnblogs.com/fuhongxue2011/archive/2011/05/25/2056775.html的文章

我自己也写了个冒泡排序

<script>
var temp;
var arr=new Array(7,3,9,5,4,1);
for (var i=0;i<arr.length;i++)
{
	for(var j=i+1;j<arr.length;j++)
{
	if(arr[i]<arr[j])
{
	temp=arr[i];
	arr[i]=arr[j];
	arr[j]=temp;
}
}
}
for (var i=0;i<arr.length;i++)
{
	alert(arr[i]);
}
</script>

arr[i]<arr[j]  这时候是冒泡降序

arr[i]>arr[j]这时候是冒泡升序

谨以此文留以纪念

详解:

第一个for循环从0开始 第二个for循环从1开始

第二个for循环的作用是 拿每一个i的值和所有比较   然后符合条件 进行交换 否则不交换  然后进行 i+1 重复比较

if(arr[i]<arr[j])//符合前一个数小于后一个数进行下边的交换 
{
	temp=arr[i];//小的数交给临时变量
	arr[i]=arr[j];//大的数替换给小的数的位置
	arr[j]=temp;//临时变量中的小的数替换大的数的位置
}
比如 7,3,9

第一次:7(i=0)和3(j=1)比(不交换)    7(i=0)和9(j=2)比(交换) -->937(现在的顺序是973了)

i+1 j+1 之后

第二次:3(i=1)和7(j=2)比(交换) -->973(现在的顺序是973)

以为只有3个数  所以到此over

原文地址:https://www.cnblogs.com/0banana0/p/2057177.html