同樣的先上百度百科 --
選擇排序(Selection sort)是一種簡單直觀的排序算法。它的工作原理是每一次從待排序的數(shù)據(jù)元素中選出最?。ɑ蜃畲螅┑囊粋€元素,存放在序列的起始位置,然后,再從剩余未排序元素中繼續(xù)尋找最?。ù螅┰兀缓蠓诺揭雅判蛐蛄械哪┪?。以此類推,直到全部待排序的數(shù)據(jù)元素排完。 選擇排序是不穩(wěn)定的排序方法。
以上文字中已經(jīng)說的很明白了:從待排序的數(shù)組中,選擇一個最大或者最小的值放在待排序數(shù)組的起始位置

select sort
如上圖,min存儲的為待排序數(shù)組中的最小值,每次內(nèi)層循環(huán)結(jié)束后,交換i和min的值,即達(dá)到了在i的位置(起始位置)獲得最小值(最大值)的目的;
來!上代碼
static void Main(string[] args)
{
int len = 20;
Random rd = new Random();
int[] arr = new int[len];
for (int i = 0; i < len; i++)
{
arr[i] = rd.Next(0, 1000);
}
Console.WriteLine("排序前---------");
outputArr(arr);
selectSort(arr);
Console.WriteLine("排序后---------");
outputArr(arr);
}
private static void selectSort(int[] arr)
{
if (arr == null || arr.Length <2)
return;
for (int i = 0; i < arr.Length; i++)//每次循環(huán)的范圍為待排序的數(shù)組范圍
{
int min = i; //min存取最小值
for (int j = i + 1; j < arr.Length; j++)
{
min = arr[min] < arr[j] ? min : j; //三目運算 取小值
}
swap(arr, min, i);//內(nèi)層循環(huán)結(jié)束 交換 min 和 i 的值,使i(當(dāng)前位置)為最小值
}
}
測試結(jié)果:Perfect

result