选择排序

Posted luanxm

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了选择排序相关的知识,希望对你有一定的参考价值。

 

技术分享图片

数据结构 数组
最差时间复杂度 O(n^2)
最优时间复杂度 O (n^2)
平均时间复杂度 O(n^2)
空间复杂度 O(1)
排序方式 in-place
稳定性 不稳定

 

 

 

 

 

 

 

 

 

步骤:

首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置

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

重复第二步,直到所有元素均排序完毕。

    public class SelectionSort : SortBase
    {
        public override void Sort()
        {
            int len = arr.Length;
            int iCount = 0;
            for (int i = 0; i < len - 1; i++)
            {
                iCount++;
                int jCount = 0;
                //获取arr[n](外层第n轮)后的最小值
                int min = i;
                for (int j = i + 1; j < len; j++)
                {
                    jCount++;
                    if (arr[j] < arr[min])
                    {
                        min = j;
                    }
                }
                //arr[n]和最小值交换
                if (i != min)
                {
                    int temp = arr[min];
                    arr[min] = arr[i];
                    arr[i] = temp;
                }
                Console.WriteLine($"i:{iCount} j:{jCount}");
                base.output(arr);
            }

        }
        
        //相反的思路
        public override void Sort2()
        {
            int len = arr2.Length;
            int iCount = 0;
            for (int i = len - 1; i > 0; i--)
            {
                iCount++;
                int jCount = 0;
                int min = i;
                for (int j = i - 1; j >= 0; j--)
                {
                    jCount++;
                    if (arr2[j] > arr2[min])
                    {
                        min = j;
                    }
                }
                if (i != min)
                {
                    int temp = arr2[min];
                    arr2[min] = arr2[i];
                    arr2[i] = temp;
                }
                Console.WriteLine($"i:{iCount} j:{jCount}");
                base.output(arr2);
            }

        }

    }

  结果:

技术分享图片

以上是关于选择排序的主要内容,如果未能解决你的问题,请参考以下文章

初识Spring源码 -- doResolveDependency | findAutowireCandidates | @Order@Priority调用排序 | @Autowired注入(代码片段

VSCode自定义代码片段——CSS选择器

VSCode自定义代码片段6——CSS选择器

在第6731次释放指针后双重免费或损坏

微信小程序代码片段

pycharm添加Odoo代码片段