码不停蹄v

导航

冒泡排序&选择排序

复制代码
/*
  什么是冒泡排序:从头到尾比较相邻的两个数的大小,如果符合条件则进行比较
  
  【注】:从小到大进行排序


  假设有一个数组 var arr = [9,8,7,6,5,4]; 我们想要进行这个数组进行排序那么按照冒泡排序的规则我们可以进行演变和尝试

  第一次比较
  9 8 7 6 5 4
  
  8 9 7 6 5 4
  8 7 9 6 5 4
  8 7 6 9 5 4
  8 7 6 5 9 4
  8 7 6 5 4 9
  
  通过第一轮的比较我们将最大的数字9比较了出来,但是这并不是我们想要的最终结果,所以我们还需要继续比较


  第二次比较
  8 7 6 5 4

  7 8 6 5 4
  7 6 8 5 4
  7 6 5 8 4
  7 6 5 4 8
  
  通过第二轮比较我们将最大数字8比较了出来

  第三次比较
  7 6 5 4
  
  6 7 5 4
  6 5 7 4
  6 5 4 7
  
  通过比较我们将最大数字7比较了出来

  第四次比较
  6 5 4

  5 6 4
  5 4 6
  
  通过比较我们将最大数字6比较了出来

  第五次比较
  5 4
  
  4 5
  
  通过比较我们将数组5比较了出来


  
  【注】:通过以上演变我们得出一个结论也就是说比较的次数等于数组的长度减一; 每一次的比较内部需要两两比较的次数是 数组的长度-1-i
  
*/
var temp;
for(var i=0;i<arr.length-1;i++){
  for(var j=0;j<arr.length-1-i;j++){
    if(arr[j]>arr[j+1]){
       temp = arr[j];
       arr[j] = arr[j+1];
       arr[j+1] = temp; 
    }
  }
}
复制代码

 

 

 

复制代码
/*
  什么是选择排序
     类似于打擂台一样,谁赢了谁就站在第一位

   
  假设有一个数组 var arr = [9,8,7,6,5]; 我们想要进行这个数组进行排序那么按照选择排序的规则我们可以进行演变和尝试
  第一轮比较
  9 8 7 6 5
  
  8 9 7 6 5
  7 9 8 6 5
  6 9 8 7 5
  5 9 8 7 6

  第一轮比较出最小的数放在了第一位

  第二轮比较

  9 8 7 6

  8 9 7 6
  7 9 8 6
  6 9 8 7

  第二轮比较出最小的数放在了第一位

  第三轮比较
  9 8 7

  8 9 7
  7 9 8

  第三轮比较出最小的数放在了第一位

  第四轮比较
  9 8
  
  8 9

  第四轮比较完毕


  【总结】:首先看比较次数的规律:数组的长度-1,每轮比较的规律:每次比较的位置都是当前数字的位置+1进行的比较

*/
var temp;
for(var i=0;i<arr.length-1;i++){
  for(var j=i+1;j<arr.length;j++){
    if(arr[i]>arr[j]){
      temp = arr[i];
      arr[i] = arr[j];
      arr[j] = temp;
    }
  }
}

 

 

posted on 2020-08-11 23:58  码不停蹄v  阅读(190)  评论(0编辑  收藏  举报