算法系列:朋友们,我们继续了解C#的算法,这里介绍选择排序算法。选择排序算法也是一种比较简单直观的算法。它的工作原理是每一次从待排序的数据元素中选出最小(最大)的一个元素,存放在序列的起始位置,直到全部参与排序的数据都排完。
它的时空复杂度和冒泡算法一样,时间复杂度为元素个数的平方,空间复杂度为1。
示例代码如下:
static void Main()
{
int[] arr = { 64, 25, 12, 22, 11 };
Console.WriteLine("Original array:");
PrintArray(arr);
SelectionSort(arr);
Console.WriteLine("\nSorted array:");
PrintArray(arr);
}
static void SelectionSort(int[] arr)
{
int n = arr.Length;
for (int i = 0; i < n - 1; i++)
{
// 找到最小元素的索引
int minIdx = i;
for (int j = i + 1; j < n; j++)
{
if (arr[j] < arr[minIdx])
{
minIdx = j;
}
}
// 将找到的最小元素交换到当前位置
int temp = arr[minIdx];
arr[minIdx] = arr[i];
arr[i] = temp;
}
}
static void PrintArray(int[] arr)
{
foreach (int value in arr)
{
Console.Write(value + " ");
}
Console.WriteLine();
}