javascript排序算法-选择排序

选择排序

概念:选择排序大致的思路是找到数据结构中的最小值并将其放置在第一位,接着找到第二小的值并将其放在第二位,以此类推。

复杂度: O(n^2)

代码实现

var swap = function (array, index1, index2){
  var aux = array[index1];
  array[index1] = array[index2];
  array[index2] = aux;
}

var selectionSort = function(array) {
  var length = array.length,// {1}声明一些将在算法内使用的变量
    indexMin;
  for (var i = 0;i < length -1;i++) {// {2}外循环
    indexMin = i;// {3}假设本迭代轮次的第一个值为数组最小值
    for (var j = i;j < length;j++) {// {4}从当前i的值开始至数组结束
      if (array[indexMin] > array[j]) {// {5}我们比较是否位置j的值比当前最小值小
        indexMin = j; // {6};如果是,则改变最小值至新最小值
      }
    }
    if (i !== indexMin) {
      swap(array, i, indexMin); // {7}最后,如果该最小值和原最小值不同(行{7}),则交换其值。
    }
  } // 复杂度是O(n^2)
  return array;
}

举例:下图是把[5,4,3,2,1]进行选择排序的一个过程

原文地址:https://www.cnblogs.com/ppxyq/p/10271372.html