选择排序算法简介
选择排序大致的思路是找到数据结构中的最小值并将其放置在第一位,接着找到第二小的值并将其放在第二位,以此类推。
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);
参考:《算法图解》
声明:本站所有文章和图片,如无特殊说明,均为原创发布,转载请注明出处。