首页 > 编程语言 > 详细

选择排序

时间:2019-01-07 01:07:28      阅读:218      评论:0      收藏:0      [点我收藏+]

 

技术分享图片

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

        }

    }

  结果:

技术分享图片

选择排序

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!