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

题干: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;
  }
}

猜你喜欢

转载自www.cnblogs.com/lynshxs/p/9834776.html