选择排序

选择排序算法简介

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

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);

参考:《算法图解》

声明:本站所有文章和图片,如无特殊说明,均为原创发布。商业转载请联系作者获得授权,非商业转载请注明出处。
随机推荐
p 标签里面不能嵌套块级元素
JavaScript 事件
Node.js 的 URL 的模块缺陷
wp_signon() 自定义用户登录函数
WordPress 后台添加菜单
JavaScript Proxy 代理
WordPress 增强编辑器功能
github Support for password authentication was removed