算法---冒泡排序法

简介: 冒泡排序:通过对相邻元素的对比,并交换位置,一步一步的把一个元素给挑选出来。我们可以使用两层嵌套的for循环来实现这个过程,也就是实现冒泡排序://外层控制轮数for(var i=0;i

冒泡排序:

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

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

 

相关文章
|
2月前
|
搜索推荐 算法 Python
python实现冒泡排序算法
python实现冒泡排序算法
27 0
|
5月前
|
机器学习/深度学习 存储 算法
【算法基础】常数操作 时间复杂度 选择排序 冒泡排序 插入排序 位运算
【算法基础】常数操作 时间复杂度 选择排序 冒泡排序 插入排序 位运算
|
5月前
|
搜索推荐 算法 C#
【Unity 3D】C#中冒泡排序、选择排序、插入排序等算法的详解(附源码 超详细)
【Unity 3D】C#中冒泡排序、选择排序、插入排序等算法的详解(附源码 超详细)
56 1
|
16天前
|
搜索推荐 算法 Java
sort-01-bubble sort 冒泡排序算法详解
这是一个关于排序算法的系列文章摘要。作者整理了10种不同的排序算法,包括冒泡排序、快速排序、选择排序、堆排序、插入排序、希尔排序、归并排序、计数排序、桶排序和大文件外部排序。文章详细介绍了冒泡排序的工作原理、流程,并提供了代码实现,强调了在实现中考虑的改进点,如统一接口、实用性增强和日志输出。此外,还提供了一个排序接口和工具类以方便使用,并通过测试代码和日志展示了排序过程。整个系列旨在帮助读者理解和掌握排序算法。相关代码已开源在GitHub。
|
1月前
|
存储 算法 搜索推荐
【数据结构与算法】归并排序(详解:递归与非递归的归并排序 | 赠:冒泡排序和选择排序)
【数据结构与算法】归并排序(详解:递归与非递归的归并排序 | 赠:冒泡排序和选择排序)
|
1月前
|
搜索推荐 算法 Java
Java基础(冒泡排序算法)
Java基础(冒泡排序算法)
19 3
|
2月前
|
搜索推荐 算法 C语言
C语言实现冒泡排序算法
C语言实现冒泡排序算法
19 0
|
2月前
|
搜索推荐 C#
C#实现冒泡排序算法
C#实现冒泡排序算法
20 0
|
2月前
|
搜索推荐 Python
Python 实现冒泡排序算法
Python 实现冒泡排序算法
11 0
|
3月前
|
搜索推荐 算法
在冒泡排序算法中,为什么每次比较相邻的元素时都要进行交换?
【2月更文挑战第8天】【2月更文挑战第21篇】在冒泡排序算法中,为什么每次比较相邻的元素时都要进行交换?