选择排序的平均时间复杂度为O(n²),最好时间复杂度为O(n²),最坏时间复杂度为O(n²),空间复杂度为O(1),是一种不稳定的算法。
1.将整个记录序列划分为有序区和无序区,初始时有序区为空,无序区含有待排序的所有记录。
2.在无序区查找值最小的记录,将它与无序区的第一个记录交换,使得有序区扩展一个记录,同时无序区减少一个记录。
3.不断重复步骤2,直到无序区只剩下一个记录为止。
class Program
{
static void Main(string[] args)
{
int[] list = {7,5,6,3,9,4,1};
Sort.choiseSort(list);
}
}
class Sort
{
public static void choiseSort(int[] list)
{
for (int i = 0; i < list.Length - 1; i++)
{
int index = i;
for (int j = i + 1; j < list.Length; j++)
{
if (list[j] < list[index])
{
index = j;
}
}
if (index != i)
{
int t = list[index];
list[index] = list[i];
list[i] = t;
}
}
}