算法---冒泡排序法
冒泡排序:
通过对相邻元素的对比,并交换位置,一步一步的把一个元素给挑选出来。
我们可以使用两层嵌套的for循环来实现这个过程,也就是实现冒泡排序:
//外层控制轮数
for(var i=0;i<len;i++){
//内层对数组元素进行冒泡选择
for(var j=0;j<len-1-i;j++){
//交互元素
if(arr[j] > arr[j+1]){
var temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
下面是冒泡排序的完整代码。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh-cn">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
<title>冒泡排序</title>
<meta name="keywords" content="关键字列表" />
<meta name="description" content="网页描述" />
<link rel="stylesheet" type="text/css" href="" />
<style type="text/css"></style>
<script type="text/javascript">
//参数数字数组
function bubble(arr){
//检查参数
if(toString.call(arr) !== '[object Array]'){
return false;
}
//获取数组长度
var len = arr.length;
if(len <= 1){//小于1不用排序
return arr;
}
//外层控制轮数
for(var i=0;i<len;i++){
//标记是否有排序的元素
var mark = true;
//内层对数组元素进行冒泡选择
for(var j=0;j<len-1-i;j++){
//交互元素
if(arr[j] > arr[j+1]){
mark = false;
var temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
if(mark){
//当没有进行冒泡选择时,证明已经排序好了
return arr;
}
}
}
//测试
var ar = [9,3,7,4,8,2,5,1,6,0];
alert(bubble(ar));
</script>
</head>
<body>
</body>
</html>


浙公网安备 33010602011771号