JavaScript实现冒泡排序
来源:互联网 发布:什么养车软件好 编辑:程序博客网 时间:2024/06/05 20:55
一、冒泡排序简介:
假设有一个数组a,我们想象成有一个班级名叫a班,现在全班随意排成一排,排头的位置是a[0],排尾的位置是a[a.length-1]。但高矮顺序不是有序的,我们想从矮到高排,排头最矮,排尾最高。
下面是一种方法:
第一轮:
1、首先,排头和旁边的队员比较,如果比旁边队员高,两个人交换位置;不比旁边队员高,则不变。经过这第一次比较,可以肯定站在a[1]位置的肯定是a[0]、a[1]位置队员中较高的那一位;
2、a[1]位置队员和a[2]位置队员比较,如果比a[2]位置队员高,两个人交换位置;不比a[2]位置队员高,则不变。经过这第二次比较,可以肯定站在a[2]位置的肯定是a[0]、a[1]、a[2]位置队员中最高的那一位;
3、a[2]位置队员和a[3]位置队员比较,如果比a[3]位置队员高,两个人交换位置;不比a[3]位置队员高,则不变。经过这第三次比较,可以肯定站在a[3]位置的肯定是a[0]、a[1]、a[2]、a[3]位置队员中最高的那一位;
······
直到a[a.length-2]位置队员和a[a.length-1]位置队员比较完成,这样的结果是,最高的那一位队员到了队尾的位置。
说明:
1、这有点像是“冒泡”的过程,称为冒泡排序还是比较形象的;就像老师说:“谁最高?排到队尾!”,但是眼睛看不准确,所以挨着挨着比较,第一轮之后最高的那个队员冒了出来,到了队尾的位置。
2、上面叙述中用了“不比某队员高”的叙述方法,而不是“比某队员矮”的叙述方法,采用后一种叙述将漏掉两者一样高的情况。当两者一样高时,不用换位置。
第二轮:
重复第一轮的过程,只不过,现在不用比较到最后一个位置,因为第一轮已经知道他是最高的,只需要比较到倒数第二个位置即可。
第三轮:
重复第一轮的过程,只不过,现在不用比较到倒数第二个位置,因为第二轮已经知道他是第二高的,只需要比较到倒数第三个位置即可。
·····
直到,只剩下排头的位置a[0]和旁边的位置a[1],这时a[2]位置已经是倒数第三高了,a[0]和a[1]再次比较,较高的排在a[1]位置,那么整个排序就已完成。
这种排序的思想就是冒泡排序。
二、用JavaScript实现冒泡排序
function sort(arr) { var l=arr.length-1; var temp; while(l>0){ for (var j = 0; j < l; j++) { if (arr[j]>arr[j+1]) { temp=arr[j+1]; arr[j+1]=arr[j]; arr[j]=temp; } } l--; } return arr; } var a=[11,2,3,445,7,32,71,8,94]; console.log(sort(a)); var b=[94,11]; console.log(sort(b));
1、结束条件:
当l=1时,还有a[0]位置和a[1]位置没比较,还可以比较一次;当l=0时,全部都比较过了,因此不用再比较;
2、一个小陷阱:
如果用change函数代替交换过程,即调用用以下函数
function change(num1,num2){ var temp=num2; num2=num1; num1=temp;}
代替如下部分:
不能实现正确的逻辑,因为调用change函数时,将arr[j]和arr[j+1]的值赋值给num1和num2变量,然后交换num1和num2变量,并未实现交换arr[j]和arr[j+1]。
if (arr[j]>arr[j+1]) {
temp=arr[j+1];
arr[j+1]=arr[j];
arr[j]=temp;
}
- Javascript实现冒泡排序
- javascript实现冒泡排序
- JavaScript实现冒泡排序
- 用JavaScript实现冒泡排序
- javascript实现-冒泡排序算法
- 经典冒泡排序 从小到大排序 JavaScript实现
- 【Javascript】实现快速,选择,冒泡,插入排序
- JavaScript实现冒泡排序、快速排序、插入排序
- 用JavaScript实现十大经典排序算法--冒泡排序
- 【javascript 数据结构与算法】javascript实现冒泡排序
- javascript冒泡排序
- Javascript 冒泡排序
- javascript数组冒泡排序
- javascript冒泡排序
- javascript冒泡排序
- Javascript冒泡排序
- javascript 冒泡排序
- JavaScript数组冒泡排序
- acm路线
- 根据身份证号码获取年龄
- elasticsearch
- Uva1593
- 卷积神经网络----理解
- JavaScript实现冒泡排序
- 小国的游戏(思维题)
- 未重复数
- APP性能测试工具
- 机房-上下机
- C语言学习历程(九)string.h的几个函数算法程序
- target的属性值
- vb.net 教程 8-2 简单的SQL语言5
- Python学习笔记摘要(一)类型 字符串 函数 列表 深浅拷贝