排序算法-选择排序

选择最小值,与元素0进行交互。

排除元素0,选择最小值与元素1进行交换。

 首先找到最小值

之后交换元素

 代码实现:

//选择排序 O(n²)
    class SelectSort
    {
        public static void Sort(int[] arr)
        {
            int n = arr.Length;

            //外层循环控制每一轮循环中要交换的位置i
            //第一轮循环 i=0 执行循环体内逻辑 找到最小值然后和arr[i]交换 将第一个元素排好序
            //第二轮循环 i=1 执行循环体内逻辑 找到最小值然后和arr[i]交换 将第二个元素排好序
            //....
            //第n轮循环 i=n-1 执行循环体内逻辑 找到最小值然后和arr[i]交换 将最后一个元素排好序
            //跳出外层循环 完成整个数组的选择排序
            for (int i = 0; i < n; i++)
            {
                //最小元素的索引min 从未排序的第一个位置i开始寻找
                int min = i;

                //内层循环在[i+1...n)寻找最小值对应的索引min
                for (int j = i + 1; j < n; j++)
                {
                    if (arr[j] < arr[min])
                        min = j;
                }

                //内层循环结束,找到最小值arr[min],和未排序的边界元素arr[i]交换位置
                Swap(arr, i, min);
            }
        }

        private static void Swap(int[] arr, int i, int j)
        {
            int t = arr[i];
            arr[i] = arr[j];
            arr[j] = t;
        }
    }

时间复杂度:O(n^{2}

什么是选择排序?
选择排序( Selection sort)是一种简单直观的排序算法。一般是初学者接触的第一个排序算法,简称为选排。它的工作原理是每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。

选择排序的工作原理
选择排序算法通过选择和交换来实现排序,其排序流程如下:
(1)首先从原始数组中选择最小的(或最大的)1个数据,将其和位于第1(n)个位置的数据交换。
(2)接着从剩下的n-1个数据中选择次小的1个元素,将其和第2(n)个位置的数据交换
(3)然后,这样不断重复,直到最后两个数据完成交换。最后,便完成了对原始数组的从小到大的排序

例如给定一组数据,4,6,8,10,23其排序过程如以下所示
第一次:23,4,6,8,10
第二次:23,10,4,6,8
第三次:23,10,,8,4,6
第四次:23,10,8,6,4
程序结束,得出23,10,8,6,4
————————————————
版权声明:本文为CSDN博主「Diamond_apple」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Diamond_apple/article/details/113061807

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值