码迷,mamicode.com
首页 > 编程语言 > 详细

从零开始学算法 - 选择排序

时间:2018-10-23 10:58:32      阅读:182      评论:0      收藏:0      [点我收藏+]

标签:次数   array   从零开始   最小数   nbsp   选择排序   最小   index   length   

题干:n个数字从小到大排列。
算法思路:遍历数字,将最小的数字放到起始位置,依次循环。
 
基本实现: 
思路:用两层循环实现,外层循环控制整体遍历的次数,内层循环控制当次遍历。
var array = [65,97,76,13,27,49,58];
for(var i=0;i<array.length;i++){
  var min = array[i];
  for(var j=i+1;j<array.length;j++){
    if(min>array[j]){
      var tmp = min;
      min=array[j];
      array[j]=tmp;
    }
  }
  array[i]=min;
}

 

优化:
思路:减少交换次数,确定了最小数的位置后再交换。
var array = [65,97,76,13,27,49,58];
for(var i=0;i<array.length;i++){
  var minIndex = i;
  for(var j=i+1;j<array.length;j++){
    if(array[minIndex]>array[j]){
      minIndex = j;
    }
  }
  if(minIndex != i){
    var tmp = array[minIndex];
    array[minIndex] = array[i];
    array[i] = tmp;
  }
}

 

从零开始学算法 - 选择排序

标签:次数   array   从零开始   最小数   nbsp   选择排序   最小   index   length   

原文地址:https://www.cnblogs.com/lynshxs/p/9834776.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!