选择排序

选择排序算法简介

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

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

参考:《算法图解》

声明:本站所有文章和图片,如无特殊说明,均为原创发布。商业转载请联系作者获得授权,非商业转载请注明出处。
真诚赞赏,手留余香
赞赏
随机推荐
WordPress 设置菜单
WordPress 添加 Favicon 图标的方法
curl 的用法指南
WordPress 使用 shortcode() 增加编辑器功能
如何使用 Photoshop 绘画像素风格图片
Debian11 安装笔记2:编译安装PHP
WordPress 常用函数 / sanitize_user
WordPress 一键从HTTP转换到HTTPS