排序算法 -- 选择排序

同样的先上百度百科 --
选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到全部待排序的数据元素排完。 选择排序是不稳定的排序方法。

以上文字中已经说的很明白了:从待排序的数组中,选择一个最大或者最小的值放在待排序数组的起始位置

select sort

如上图,min存储的为待排序数组中的最小值,每次内层循环结束后,交换i和min的值,即达到了在i的位置(起始位置)获得最小值(最大值)的目的;

来!上代码

static void Main(string[] args)
        {
            int len = 20;
            Random rd = new Random();
            int[] arr = new int[len];
            for (int i = 0; i < len; i++)
            {
                arr[i] = rd.Next(0, 1000);
            }
            Console.WriteLine("排序前---------");
            outputArr(arr);
            selectSort(arr);
            Console.WriteLine("排序后---------");
            outputArr(arr);
        }

        private static void selectSort(int[] arr)
        {
             if (arr == null || arr.Length <2)
                return;
            for (int i = 0; i < arr.Length; i++)//每次循环的范围为待排序的数组范围
            {
                int min = i; //min存取最小值
                for (int j = i + 1; j < arr.Length; j++) 
                {
                    min = arr[min] < arr[j] ? min : j; //三目运算 取小值
                }
                swap(arr, min, i);//内层循环结束 交换 min 和 i 的值,使i(当前位置)为最小值
            }
        }

测试结果:Perfect

result
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。