選擇排序每輪選出最小元素交換到前端:
using System;
namespace SelectionSorter {
public class SelectionSorter {
private int min;
public void Sort(int[] list) {
for (int i = 0; i < list.Length - 1; i++) {
min = i;
for (int j = i + 1; j < list.Length; j++)
if (list[j] < list[min]) min = j;
int t = list[min];
list[min] = list[i];
list[i] = t;
}
}
}
public class MainClass {
public static void Main() {
int[] arr = {1,5,3,6,10,55,9,2,87,12,34,75,33,47};
var sorter = new SelectionSorter();
sorter.Sort(arr);
foreach (var n in arr) Console.Write("{0} ", n);
Console.WriteLine();
}
}
}
時間複雜度 O(n²),交換次數最少(最多 n-1 次),適合寫入成本高的儲存媒體。