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

Posted lynshxs

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从零开始学算法 - 选择排序相关的知识,希望对你有一定的参考价值。

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

 

以上是关于从零开始学算法 - 选择排序的主要内容,如果未能解决你的问题,请参考以下文章

数据结构与算法从零开始系列:冒泡排序选择排序插入排序希尔排序堆排序快速排序归并排序基数排序

从零开始学Java编程!java集合类详解和使用

从零开始学数据结构和算法:mysql环境变量的配置win10

从零开始的算法指南大概是代码注释最详细的希尔排序笔记

从零开始学习算法之归并排序[1](2.2归并排序)

算法渣-排序-选择排序