算法---冒泡排序法

Posted Mr_伍先生

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法---冒泡排序法相关的知识,希望对你有一定的参考价值。

冒泡排序:

通过对相邻元素的对比,并交换位置,一步一步的把一个元素给挑选出来。

我们可以使用两层嵌套的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>
复制代码

 

以上是关于算法---冒泡排序法的主要内容,如果未能解决你的问题,请参考以下文章

三大基础排序算法(冒泡排序,选择排序,插入排序)

java冒泡排序法代码

重温基础算法内部排序之冒泡排序法

JAVA 冒泡排序法的详细解释是啥?

C语言——如何有效记忆冒泡排序法?

冒泡法