实现选择排序算法
public static int[] Sort(int[] a)
{
int n = a.Length;
if (n == 0)
return null;
int min = 0;
for (int i = 0; i < n; i++)
{
min=i;//确定最小值所在的位置
for (int j = i + 1; j < n; j++)
{
if (a[j] < a[i])
{
min = j;
execArray(ref a, i, min);//将最小值所在的位置进行替换
}
}
}
return a;
}
public static void execArray(ref int[] a,int n,int b)
{
int temp = a[n];
a[n] = a[b];
a[b] = temp;
}
优缺点:
1、运行时间和输入无关。为了找出最小的元素而扫描一遍数组并不能为下次扫描提供什么有用的信息。这是选择排序的缺点。
2、数据移动是最小的。每次交换都会改变两个数组元素的值。
对于长度为N的数组,选择排序需要大约N*N/2次比较和N次交换。