您的位置:首页 > 其它

常用排序算法之一:三种常用的冒泡排序的改进算法。

2016-04-27 17:53 141 查看
冒泡排序效率比较低,进行的三种算法改进。

三种改进的冒泡排序,一次递增的改进。把前端和后端已经顺序对的数据直接忽略。

第一种方式:按照原先的冒泡排序来说,如果其中有一次循环没有进行值的交换,那么就已经排序完毕了。

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>冒泡排序改进方案1</title>

</head>

<body>

</body>

<script type="text/javascript">

var arr = [21,43,432,987,98,432,433,37,83];

var flag = true; // 设置的标志,用来标志本次循环是否有值交换

while(flag){

flag = false;

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

if(arr[i]<arr[i+1]){

var temp = arr[i];

arr[i]=arr[i+1];

arr[i+1]=temp;

flag = true;

}

}

}

alert(arr);

</script>

</html>

第二中方式:用flag记录后面数据中最后一次交换值得位置。

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title></title>

</head>

<body>

</body>

<script type="text/javascript">

var arr = [21,43,432,987,98,432,433,37,83];

var flag = arr.length;; // 设置标志位,用来记录最后一次交换值的下标。如果下标不等于arr。length-1那就不用比较之后的数据了

var k ;

while(flag){

k = flag;

flag = 0;

for(var i=0;i<k-1;i++){

if(arr[i]<arr[i+1]){

var temp = arr[i];

arr[i]=arr[i+1];

arr[i+1]=temp;

flag=i;

}

}

}

alert(arr);

</script>

</html>

第三种方式:

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title></title>

</head>

<body>

</body>

<script type="text/javascript">

var arr = [21,43,432,987,98,432,433,37,83];

var flag = arr.length; // 设置标志位,用来记录最后一次交换值的下标。如果下标不等于arr。length-1那就不用比较之后的数据了

var flagPre = 0; // 设置标志位,用来记录第一次交换值的下标,其中用flagF来表示是不是第一次交换值。

var flagF =true;

var k ;

while(flag){

k = flag;

flag = 0;

for(var i=flagPre;i<k-1;i++){

if(arr[i]<arr[i+1]){

var temp = arr[i];

arr[i]=arr[i+1];

arr[i+1]=temp;

flag=i;

if(flagF==true){

flagPre=i;

flagF=false;

}

}

}

}

alert(arr);

</script>

</html>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: