冒泡排序

<script type="text/javascript">

//冒泡排序法从小到大排序

/*算法原理:

1.比较相邻的元素。如果第一个比第二个大,就交换他们两个。

2.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。最后的元素会是最大的数。

3.针对所有的元素重复以上的步骤,除了最后一个。

4.持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较

     

假设有数组: [7,6,9,5,3]; 对于N个元素数组需要进行 N-1次比较

第一轮

用索引为0的也就是7与7索引为1的6比,如果大于索引为1的交换他们两个位置

交换后: [6,7,9,5,3];

继续用索引为1的7与索引为2的9比较,不大于9不动。

[6,7,9,5,3];

继续用索引为2的9与索引为3的5比较,大于5交换位置

[6,7,5,9,3];

继续用索引为3的9与索引为4的3比较然后交换位置

[6,7,5,3,9];

一轮下来后最后一个就是最大的定下了,下一轮就不需要比较最后一个。

     

第二轮

从索引为0的与索引为1的比较比较结果不变

[6,7,5,3,9];

用索引为1的与索引为2的比较结果交换

[6,5,7,3,9];

用索引为2的与索引为3的比较结果交换

[6,5,3,7,9];

二轮下来后,确定两个7与9,然后进行第三轮

     

第三轮

从索引为0的与索引为1的比较结果交换

[5,6,3,7,9];

从索引为1的与索引为2的比较结果交换

[5,3,6,7,9];

        第三轮比较后确定了最后三个。

     

第四轮:

从索引为0的与索引为1的比较结果交换

[3,5,6,7,9];

比较完毕交换结束,排序完成。

*/

   

//冒泡排序法代码实现:

var arr = [6,7,9,5,3];

for(var i=1;i<arr.length;i++){        

document.writeln("------第 "+i+" 轮---------");         

        for(var j=0;j<arr.length-i;j++)

{

if(arr[j]>arr[j+1]){

t = arr[j+1];

arr[j+1] = arr[j];

arr[j] = t;        

     

}        

document.writeln(arr);         

}

     

}

   

</script>

posted @ 2017-09-05 08:56  lison-note  阅读(129)  评论(0编辑  收藏  举报