选择排序



定义

选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。选择排序是不稳定的排序方法。

时间复杂度

O(n^2 )

输入

数组

输出

按一定规则排序的 数组

代码

Python

# 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

// JavaScript
function findSmallest(arr) {
  let smallest = arr[0]
  let smallestIndex = 0
  let arrLength = arr.length
  for (let i = 1; i < arrLength; i++) {
    if (arr[i] < smallest) {
      smallest = arr[i]
      smallestIndex = i
    }
  }
  return smallestIndex
}

function selectionSort(arr) {
  let newArr = []
  let arrLength = arr.length
  for (let i = 0; i < arrLength; i++) {
    let smallest = findSmallest(arr);
    newArr.push(arr.splice(smallest, 1)[0]);
  }
  return newArr
}

console.log(selectionSort([5, 3, 6, 2, 10]))
原文地址:https://www.cnblogs.com/huangtq/p/15432245.html