选择排序

选择排序算法简介

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

Python 代码示例

def findSmallest(arr):
  smallest = arr[0]     // 存储最小的值
  smallest_index = 0    // 存储最小元素的索引
  for i in range(1, len(arr)):
    if arr[i] < smallest:
      smallest = arr[i]
      smallest_index = i
  return smallest_index

def selectionSort(arr): //对数组进行排序 
  newArr = []
  for i in range(len(arr)):
    smallest = findSmallest(arr) // 找出数组中最小的元素,并将其加入到新数组中
    newArr.append(arr.pop(smallest))
  return newArr

print selectionSort([5, 3, 6, 2, 10])


JavaScript 代码示例

function findSmallest(arr){
  var smallest = arr[0];
  var smallest_index = 0;
  for(var i=0; i<arr.length; i++){
    if(arr[i] < smallest){
      smallest = arr[i];
      smallest_index = i;
    }
  }
  return smallest_index;
}


function selectionSort(oldArr) {
  var newArr = [];
  var tempArr = oldArr.concat();
  var smallest;


  for(var j=0; j<oldArr.length; j++){
    smallest = findSmallest(tempArr);
    newArr.push(tempArr.splice(smallest,1)[0]);
  }
  return newArr;
}


另外一种方法:

function selectionSort(arr) {
  let len = arr.length;
  let minIndex, temp;
  for (let i = 0; i < len - 1; i++) {
    //每次未排序的初始位置
    minIndex = i;
    //剩余未排序的序列找最小值
    for (let j = i + 1; j < len; j++) {
      if (arr[j] < arr[minIndex]) {
        minIndex = j;
      }
    }
    //交换起始位置与最小原始的位置
    temp = arr[i];
    arr[i] = arr[minIndex];
    arr[minIndex] = temp;
  }
  return arr;
}

var oldArr = [2, 34, 66, 3, 1, 8];
var arr = selectionSort(oldArr);
console.log(arr);

参考:《算法图解》

声明:本站所有文章和图片,如无特殊说明,均为原创发布。商业转载请联系作者获得授权,非商业转载请注明出处。
真诚赞赏,手留余香
赞赏
搜神记
765 文章
4 教程
8 项目
随机推荐
SQL 注入的生命力
WordPress 支持事务
PHP curl 的用法
Node.js 使用 Jest 做单元测试
JavaScript history对象
JavaScript audio 教程
RESTful API 执行 delete 返回204无法获取 Body
JavaScript ES6 模块