• C#选择排序(Selection Sort)算法


    选择排序(Selection Sort)原理介绍

    选择排序(Selection Sort)是一种简单的排序算法,其实现原理如下:

    1. 遍历待排序数组,从第一个元素开始。

    2. 假设当前遍历的元素为最小值,将其索引保存为最小值索引(minIndex)。

    3. 在剩余的未排序部分中,找到比当前最小值还要小的元素,并更新最小值索引。

    4. 在遍历结束后,将找到的最小值与当前遍历位置的元素进行交换。

    5. 重复步骤2至4,直到排序完成。

    C#代码实现

    1.         /// <summary>
    2.         /// 选择排序算法
    3.         /// </summary>
    4.         public static void SelectionSortAlgorithmMain()
    5.         {
    6.             int[] array = { 6425122211993100 };
    7.             Console.WriteLine("原始数组: ");
    8.             PrintArray(array);
    9.             SelectionSortAlgorithm(array);
    10.             Console.WriteLine("排序后的数组: ");
    11.             PrintArray(array);
    12.         }
    13.         static void SelectionSortAlgorithm(int[] arr)
    14.         {
    15.             int n = arr.Length;
    16.             for (int i = 0; i < n - 1; i++)
    17.             {
    18.                 // 在未排序部分中找到最小元素的索引
    19.                 int minIndex = i;
    20.                 for (int j = i + 1; j < n; j++)
    21.                 {
    22.                     if (arr[j] < arr[minIndex])
    23.                     {
    24.                         minIndex = j;
    25.                     }
    26.                 }
    27.                 // 将最小元素与未排序部分的第一个元素交换位置
    28.                 int temp = arr[minIndex];
    29.                 arr[minIndex] = arr[i];
    30.                 arr[i] = temp;
    31.             }
    32.         }
    33.         static void PrintArray(int[] arr)
    34.         {
    35.             int n = arr.Length;
    36.             for (int i = 0; i < n; ++i)
    37.             {
    38.                 Console.Write(arr[i] + " ");
    39.             }
    40.             Console.WriteLine();
    41.         }

    图片

    总结

    选择排序算法的时间复杂度为O(n^2),其中n是待排序数组的大小。尽管其时间复杂度较高,但选择排序算法比较简单易懂,并且在某些特定情况下,例如对于小规模的数组来说,其性能可能表现得比其他高级排序算法要好。

  • 相关阅读:
    Xamarin.Android实现数据展示
    Kubernetes(k8s)服务账号Service Accounts
    Go语言学习笔记——jwt跨域鉴权
    笔记本电脑配置知识大全
    【微服务】五. Nacos服务注册
    基于微信小程序的健身房私教预约平台设计与实现(源码+lw+部署文档+讲解等)
    [项目管理-30]:项目成员成熟度以及采取的不同的策略
    高效的C++(一)
    【数据集】1980-2020年(5年)土地利用分类数据-中国科学院
    Java Number包含哪几种类型呢?
  • 原文地址:https://blog.csdn.net/qq_37237487/article/details/133936060