JavaScript数组 - 冒泡排序

冒泡排序

这节我们来讲大名鼎鼎的冒泡排序

原理:前后两个数两两进行比较,如果符合交换条件,交换位置,知道所有数据排序完成,结束比较。

举个小例子:

我们来给9,8,7,6,5,4,排序为4,5,6,7,8,9

var arr = [9,8,7,6,5,4]

排序比较的过程:

第一轮:

接着进行第二轮的排序比较:

(9在最大位置上,所以在接下来的几轮里不跟着参与)

再进行第三轮的排序比较

(这一轮的8在最大位置,以后也不再参与)

以此类推…

经过上面的每一轮比较,我们发现每一轮都取到一个最大的数放在最后

拿我们的第一轮9为例,因为我们比较的方式是两两进行比较的,所以这个9就像一个泡泡一样一层一层往上冒。所以我们把上面的过程称为冒泡排序

上面我们执行了5轮,这只是我们的分析过程,真正的执行过程还要通过循环

分析:

1.先定义一个外层循环i为总共循环了几轮;i < arr.length

2.再定义每一轮比较的次数j,j是总的元素个数 – 当前的元素,第一轮是6-1,第二轮6-2…等等,由于i是从0开始,所以我们要再减1;j < arr.length – i - 1

3.判断前后两个数是否复合交换条件;arr[i] > arr[j + 1]

4.如果符合条件就交换位置;tmp = arr[j + 1]; arr[j + 1] = arr[j]; arr[j] = tmp;

var arr = [9,8,7,6,5,4];for(var i = 0; i < arr.length; i++){//比较的轮次//每一轮比较的次数    for(var j = 0; j < arr.length - i - 1; j++){ //判断前后两个数是否复合交换条换        if(arr[j] > arr[j + 1]){ var tmp = arr[j + 1]; arr[j + 1] = arr[j]; arr[j] = tmp; }     }}alert(arr);

运行结果如下

这里主要i和j主要难理解,需要花点时间自己去理解

必须要知道i和j的作用到底是干什么的

i=0时,j<5第一轮是0 1 ,1 2 ,2 3 ,3 4等等…

i=1时,j<4第二轮是0 1 ,1 2 ,2 3 等等…

以此类‍‍‍‍‍‍‍‍‍‍‍‍类推……

这是从小到大进行排列,如果从大到小排列将数组的大于号改为小于号即可

(0)

相关推荐

  • 什么是冒泡排序?什么是选择排序?它们之间有什么区别?

    什么是冒泡排序?什么是选择排序?它们之间有什么区别?

  • JavaScript 实现 冒泡排序

        <script>         //数组排序(冒泡排序)         //冒泡排序是一种算法,把一系列的数据按照一定的循序进行排列显示(从小到大或从大到小)          ...

  • 判断两个数组是否相同

    #region Test用的 static void Write列名Dic() { StreamWriter SW = new StreamWriter(MDIParent1.Root + @&quo ...

  • 35.数组.选择排序

    选择排序: 第一轮: 第0个与第1个比, 如果  第0个 > 第1个  那就交换位置,第0个再与第2个比...... 第二轮: 第1个与第2比, ...................直到排序完 ...

  • javascript 数组 对象的一些方法记录

    记录一下常用的数组和对象的一些方法 数组 push() 数组后添加元素 // 作用:把一个元素或多个元素,从数组后面添加到数组里面: // 参数:添加的数据 // 返回:添加后的数组的长度: let ...

  • JavaScript数组 - 选择排序

    选择排序 选择排序相对于冒泡排序是比较好理解的排序方法 原理:通过比较首先选出最小的数放在第一个位置上,然后在其余的数中选择次小的数放在第二个位置,以此类推,直到排序完成. 同样还是用冒泡的那几个数9 ...

  • JavaScript数组 - 引用详解

    基本数据类型详解 在学习数组引用详解前,我们先来看基本数据类型的详解 举个小例子: 我们声明一个a = 10; 然后声明一个函数,这个函数里面有个参数为a 把这个参数的a改成5,a = 5; 并且再加 ...

  • JavaScript数组 - 系统排序

    系统排序 排序的方法有很多,有冒泡排序.选择排序等等 假设有一个数组a,我们想象成有一个班级名叫a班,现在全班随意排成一排,排头的位置是a[0],排尾的位置是a[a.length-1].但高矮顺序不是 ...

  • JavaScript数组 - 其他方法

    数组的其他方法 1.concat(); 格式:数组.concat( 数组2 ); 功能:将两个数组合并成一个新数组,源数组不会被改变 返回值:我们合并好的数组 参数:我们要合并的数组 举个小例子: 运 ...

  • JavaScript数组 - 二维数组

    JavaScript二维数组 什么是二维数组? 注意:所谓的二维数组,就是在数组中元素还为数组,如果再有数组也可称为三维数组 我们通过一个例题来进行讲解 通过循环按执行顺序为一个5x5的二维数组a赋1 ...

  • JavaScript数组 - 栈和队列方法

      栈方法  为了实现栈这个结构存在的方法 什么叫栈? 栈是古代的木盆,相当于现在的洗衣机:从同一个口进并且从同一个口出 如果要洗衣服拿出最底面的衣服必须要先拿出上面的衣服才可以 栈方法也是一样,先进 ...

  • JavaScript数组 - 概念

    数组的概念及作用 我们来学习数组之前,先来复习一下数据类型 数据类型: 基本数据类型:数字.字符串.布尔值 特殊数据类型:null.undefined 符合数据类型:数组 为什么我们要来使用数组? 当 ...

  • JavaScript数组 - 属性/遍历

    数组的属性 数组的长度: arr.length 访问数组元素的个数 注意:length属性,不是只读的,是可以设置的 举个小例子: var arr =["red", "b ...