选择排序
排序原理:
1、每一次遍历的过程中,都假定第一个索引出的元素是最小值,和其他索引处的值依次进行比较。如果当前索引处的值大于其他某个索引的值,则假定其他某个索引处的值为最小值,最后可以找到最小值所在的索引。
2、交换第一个索引处和最小值所在的索引处的值。
源码
public class SelectionSort
{
public static List<int[]> result=new List<int[]>();
public static void sort(int[] a)
{
result.Clear();
result.Add((int[]) a.Clone());
for (int i = 0; i < a.Length; i++)
{
int minIndex = i;
for (int j = i + 1; j < a.Length; j++)
{
if (compareTo(a[minIndex], a[j]))
{
minIndex = j;
}
}
exec(a,i,minIndex);
result.Add((int[])a.Clone());
}
}
/// <summary>
/// 交换两个位置的元素
/// </summary>
/// <param name="a"></param>
/// <param name="i"></param>
/// <param name="j"></param>
private static void exec(int[] a, int i, int j)
{
int temp = a[j];
a[j] = a[i];
a[i] = temp;
}
/// <summary>
/// 判断两个元素大小
/// </summary>
/// <param name="i"></param>
/// <param name="j"></param>
/// <returns></returns>
private static bool compareTo(int i, int j)
{
return i > j;
}
}
演示
时间复杂度:O(N^2)