原理:每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,每趟待排序的元素数量减一,直到全部待排序的数据元素排完。例如数量为n的数组,每次遍历i到n,选出最大(最小)的元素放在i位置,i+1,直到i等于n-1。
时间复杂度:n!,n的阶乘
实现步骤:第1趟从n个记录选择关键码最小(或最大)的记录并与第1个记录交换位置;第2趟从第2个记录开始的n-1个记录中选择关键码最小(或最大)的记录并与第2个记录交换位置。一般地,第i趟从第i个记录开始的n-i-1个记录中选择关键码最小(或最大)的记录并与第i个记录交换位置,所以,第n-1趟比较最后两个记录选择关键码最小(或最大)的记录并与第n-1个记录交换位置。
c#脚本实现:
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; } }