/// <summary>
/// 选择排序(移动次数比冒泡排序少,相对快)
/// 依次选择最小的数字放到最左边,移动少
/// </summary>
/// <param name="arr"></param>
public static void SelectionSort(this int[] arr)
{
int min, temp;
for (int outer = 0; outer < arr.Length - 1; outer++)
{
min = outer;
for (int inner = outer + 1; inner < arr.Length; inner++)
{
if (arr[inner] < arr[min])
{
min = inner;
}
}
temp = arr[outer];
arr[outer] = arr[min];
arr[min] = temp;
arr.Show();
}
}
/// <summary>
/// 选择排序(移动次数比冒泡排序少,相对快)
/// 依次选择最小的数字放到最左边
/// </summary>
/// <param name="arr"></param>
public static void SelectionSort_2(this int[] arr)
{
int minIndex, temp;
for (int outer = 0; outer < arr.Length - 1; outer++)
{
minIndex = outer;
for (int inner = outer + 1; inner < arr.Length ; inner++)
{
if (arr[minIndex] > arr[inner])
{
minIndex = inner;
}
}
if(outer != minIndex)
{
temp= arr[outer];
arr[outer] = arr[minIndex];
arr[minIndex] = temp;
arr.Show();
}
}
}