当前位置: 移动技术网 > IT编程>开发语言>JavaScript > javascript数组选择排序和冒泡排序详解

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

2020年07月14日  | 移动技术网IT编程  | 我要评论

数组的遍历

数组的索引是按照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

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网