排序规则:
首先在未排序的序列中找到最小(大)元素,放到排序序列的起始位置。
在从剩余未排序的元素中继续寻找最小(大)元素,然后放到排序序列的末尾
重复第二步,直到所有元素均排序完毕
时间复杂度:
平均时间复杂度:O(n^2),最好情况:O(n^2) ,最坏情况:O(n^2)
using System; using System.Collections.Generic; using System.Text; namespace 排序算法 { class SelectSort { //泛型排序 public static void Sort<E>(E[] arr) where E : IComparable<E> { int n = arr.Length; for(int i = 0; i < n; i++) { int min = i; for (int j =i + 1; j < n; j++) { if (arr[j].CompareTo(arr[min]) < 0) { min = j; } } Swap(arr, i, min); } } //整形排序 public static void Sort( int[] arr) { int n = arr.Length; for(int i = 0; i < n; i++) { int min = i; for(int j = i + 1; j < n; j++) { if(arr[j] < arr[min]) { min = j; } } Swap(arr, i, min); } } private static void Swap<E>(E[] arr, int i, int j) { E t = arr[i]; arr[j] = arr[i]; arr[i] = t; } } }