直接选择排序:
从待排序的记录序列中选择关键码最小(或最大)的记录并将它与序列中的第1个记录交换位置;然后从不包括第一个位置上的记录序列中选择关键码最小(或最大)的记录并将它与序列中的第2个记录交换位置;如此重复,直到序列中只剩下一个记录为止。
通俗点就是:找到最小的数把它放在第一位,找到第二小的数把它放在第二位,以此类推直到最后一个数。
class Program
{
static void Main(string[] args)
{
int[] data = new int[] { 42, 20, 17, 27, 13, 8, 17, 48 };
SelectSort(data);
foreach (var temp in data)
{
Console.Write(temp + " ");
}
Console.ReadKey();
}
static void SelectSort(int[] dataArray)
{
for (int i = 0; i < dataArray.Length - 1; i++)
{
int min = dataArray[i];
int minIndex = i;//最小值所在索引
for (int j = i + 1; j < dataArray.Length; j++)
{
if (dataArray[j] < min)
{
min = dataArray[j];
minIndex = j;
}
}
if (minIndex != i)
{
int temp = dataArray[i];
dataArray[i] = dataArray[minIndex];
dataArray[minIndex] = temp;
}
}
}
}