首页 > 编程语言 > 详细

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

时间:2018-10-23 10:28:22      阅读:131      评论:0      收藏:0      [点我收藏+]
题干: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;
  }
}

 

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

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!