冒泡排序
<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>