C# 实现选择排序

选择排序是一种简单的排序算法,它的基本思想是将待排序序列分成已排序和未排序两部分,每次从未排序中找到最小值,然后将其插入到已排序序列的末尾,直到全部元素都排序完成。虽然它的时间复杂度为 O(n^2),但是它的实现非常简单,对于小规模的数据集来说,它的性能也是非常不错的。

在 C# 中,实现选择排序也非常简单。我们可以先定义一个 SelectionSort 函数,传入一个整型数组作为参数。函数的实现过程如下:

  1. 获取数组的长度,即待排序元素的个数。

  2. 从数组的第一个元素开始,依次找出剩余元素中的最小值,记录其下标。

  3. 将最小值与当前位置的元素进行交换。

  4. 重复步骤 2 和 3,直到全部元素都排序完成。

以下是 C# 实现选择排序的完整代码:

static void SelectionSort(int[] arr)
{
    int n = arr.Length;

    for (int i = 0; i < n - 1; i++)
    {
        int minIndex = i;
        for (int j = i + 1; j < n; j++)
        {
            if (arr[j] < arr[minIndex])
            {
                minIndex = j;
            }
        }

        int temp = arr[minIndex];
        arr[minIndex] = arr[i];
        arr[i] = temp;
    }
}

我们可以通过下面的代码来测试 SelectionSort 函数的效果:

int[] arr = { 5, 1, 4, 2, 8 };
SelectionSort(arr);
foreach (var item in arr)
{
    Console.Write(item + " ");
}

输出结果为:1 2 4 5 8。

在上述代码中,我们先定义了一个整型数组 arr,然后调用 SelectionSort 函数对其进行排序,最后打印输出得到的结果。

在实际应用中,我们可能需要对更大的数据集进行排序。为了测试 SelectionSort 函数的性能,我们可以生成一个包含大量随机整数的数组,然后进行排序,并输出排序所需的时间。以下是一个示例代码,其中包含了对 100000 个随机整数进行排序的过程:

int[] arr = new int[100000];
Random rand = new Random();
for (int i = 0; i < arr.Length; i++)
{
    arr[i] = rand.Next(1, 100000);
}

Stopwatch sw = new Stopwatch();
sw.Start();
SelectionSort(arr);
sw.Stop();

Console.WriteLine($"排序所需时间:{sw.ElapsedMilliseconds} ms");

运行此代码,可以得到排序所需的时间。在我的电脑上,其输出结果为:排序所需时间:14444 ms。

通过上述代码,我们可以发现,对于大规模的数据集来说,选择排序的性能并不是很好。因此,对于需要排序大量数据的应用场景,我们应该选择更加高效的排序算法,如快速排序、归并排序等。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

实相无相

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值