C# 排序算法2:选择排序

选择排序法 ,是在要排序的一组数中,选出最小(或最大)的一个数与第一个位置的数交换;在剩下的数当中找最小的与第二个位置的数交换,即顺序放在已排好序的数列的最后,如此循环,直到全部数据元素排完为止。


原理:1. 每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,

           2. 再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。

           3. .以此类推,直到全部待排序的数据元素排完。

复制代码
 /// <summary>
        /// 选择排序
        /// </summary>
        /// <param name="arr"></param>
        /// <returns></returns>
        static int[] SelectSort(int[] arr)
        {
            for (int i = 0; i < arr.Length ; i++)// 4.继续遍历,将最小数,放入第二个,第三个...第n个位置
            {
                int minValueIndex = i; //最小值的下标位置,初始设为第一个位置
                for (int j = i+1; j < arr.Length; j++)// 2. 比较遍历后,找出这些待排序数据中最小值的下标位置
                {
                    if (arr[j] < arr[minValueIndex])//1. 比较两元素,将较小值的下标位置赋值给 minValueIndex
                    {
                        minValueIndex = j;
                    }
                }
                //3. 将选出的最小元素,与第一个位置的元素,进行交换(即选出了最小的一个数,放入了第一个位置)
                var temp = arr[i];  
                arr[i] = arr[minValueIndex]; 
                arr[minValueIndex] = temp;
            }

            return arr;
        }
复制代码

排序结果

复制代码
  static void Main(string[] args)
        {
            Console.WriteLine($"数据算法");
            var arr1=  GetArrayData(8, 1, 22);
            Console.WriteLine($"生成未排序数据:{ShowArray(arr1)}");
            var arr2 = BubbleSort(arr1);
            Console.WriteLine($"冒泡排序:{ShowArray(arr2)}");
            var arr3= SelectSort(arr1);
            Console.WriteLine($"选择排序:{ShowArray(arr3)}");
            Console.ReadLine();
        }
复制代码

 

 

posted @   明志德道  阅读(186)  评论(0编辑  收藏  举报
编辑推荐:
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
阅读排行:
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
点击右上角即可分享
微信分享提示