欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

javascript数组选择排序和冒泡排序详解

程序员文章站 2022-06-22 16:48:40
数组的遍历数组的索引是按照0~n的顺序排序,所以可以通过通过for循环来实现数组的遍历,这个行为就叫做数组的遍历var arr = [1,2,3,4,5,6]for(var i = 0;i

数组的遍历

数组的索引是按照0~n的顺序排序,所以可以通过通过for循环来实现数组的遍历,这个行为就叫做数组的遍历

var arr = [1,2,3,4,5,6]
for(var i = 0;i<arr.length;i++){ //arr.length是获取数组的长度
	document.write(arr[ i ]);
}

输出结果为 :1 2 3 4 5 6

数组的排序

数组的排序就是将一个无须的数组,通过处理,变成一个有序的数组
主要介绍2种排序的方法:冒泡排序和选择排序

冒泡排序
原理:

  • 通过循环遍历数组,让相邻的两个值进行比较,如果前一个比后一个大,那么就把两个换个位置

  • 数组遍历一遍以后,那么最后一个数字就是最大的那个了

  • 然后进行第二遍的遍历,还是按照之前的规则,第二大的数字就会跑到倒数第二的位置

  • 以此类推,最后就会按照顺序把数组排好了

var arr=[3,1,2,8,5,4,9,0]
for(var j=0;j<arr.length-1;j++){
//arr.length-1的原因:假设这个数组长度为6;后面的5个数已经比价排放好了,
//那么最前面的一个数就没有必要再进行比较了
      for(var i = 0 ; i<arr.length-1-j; i++){
      //arr.length-1的原因跟上面的是一个道理的;
      //-j是因为外部循环执行了j次之后,内部的遍历就应当减少j次;
      //也就是一个长度为5的数组,外部循环执行第二次的时候,也就是j==1时;
      //数组所需要比较的长度为4
          if(arr[i]>arr[i+1]){
              var tmp = arr[i];
              arr[i] = arr[i+1];
              arr[i+1] = tmp;
          }
      }
    }
    alert(arr)
    //输出的结果为0,1,2,3,4,5,8,9

选择排序
它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到全部待排序的数据元素排完

var arr=[3,1,2,8,5,4,9,0]
for(var j = 0;j<arr.length-1;j++){
             var min = j
         for(var i =j+1;i<arr.length-1;i++){
             if(arr[i]<arr[min]){
                 min = i 
             }
         }
             var tmp = arr[min];
             arr[min] = arr[j];
             arr[j] = tmp
         }
      alert(arr)
         //输出的结果为0,1,2,3,4,5,8,9

原理:

  • 先假定数组中的第 0 个就是最小的数字的索引

  • 即 var min = 0 ;arr[mim];

  • 然后遍历数组,只要有一个数字比我小,那么就替换之前记录的索引

  • for(var i = 0; i < arr.length ;i++){
    if(arr[i]<arr[min]){
    min = i // i为这个数组最小值得索引 也就可以得出 arr[min] 在此次遍历中,为最小值
    }
    }

  • 知道数组遍历结束后,就能找到最小的那个索引,然后让最小的索引换到第 0 个的位置
    -1通过上一步,得出arr[min]为最小值
    -2声明变量来存储arr[min] , var tmp = arr[min];
    -3 把arr[0]赋值给arr[min] ,即 arr[min] = arr[0];此时在min索引上的值为 arr[0]
    -4把tmp的值赋值给 arr[0]; 即arr[0] = tmp;此时的arr[0]所存储的值即为最小值

  • 通过外部嵌套循环来进行多次的遍历;
    for(var j = 0;j<arr.length-1;j++){

    • 再来第 j 趟遍历,假定第 1 个是最小的数字的索引
    • var min = j
      }
  • 在遍历一次数组,找到比我小的那个数字的索引

  • 遍历结束后换个位置

  • 依次类推,也可以把数组排序好

本文地址:https://blog.csdn.net/WALTER_CHM/article/details/107284819