码迷,mamicode.com
首页 > 编程语言 > 详细

选择排序

时间:2019-01-07 01:32:39      阅读:149      评论:0      收藏:0      [点我收藏+]

标签:http   oid   output   highlight   src   lin   com   bubuko   TBase   

 

技术分享图片

数据结构 数组
最差时间复杂度 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);
            }

        }

    }

  结果:

技术分享图片

选择排序

标签:http   oid   output   highlight   src   lin   com   bubuko   TBase   

原文地址:https://www.cnblogs.com/luanxm/p/10231117.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!