C#之选择排序

C#之选择排序

常见的选择排序细分为简单选择排序、树形选择排序(锦标赛排序)、堆排序。本章所说的选择排序为简单选择排序。
选择排序基本思想:
每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。
选择排序的特点:
1. 选择排序是不稳定的排序方法。
2.n个记录的文件的直接选择排序可经过n-1趟直接选择排序得到有序结果。
3.选择排序最好情况是,已经有序,交换0次;最坏情况是,逆序,交换n-1次。
4.选择排序交换次数比冒泡排序少多了,所以选择排序比冒泡排序快。
下面通过一个例子来了解快速排序的具体含义:
{ 40,29,49,37,5,78,23,11,4}
第一趟排序后 4 [29 49 37 5 78 23 11 40]
第二趟排序后 4 5 [49 37 29 78 23 11 40]
第三趟排序后 4 5 11 [37 29 78 23 49 40]
第四趟排序后 4 5 11 23 [29 78 37 49 40]
第五趟排序后 4 5 11 23 29 [78 37 49 40]
第六趟排序后 4 5 11 23 29 37 [78 49 40]
最后排序结果 4 5 11 23 29 37 40 [49 78]
由此思想,我们可以实现选择排序的代码:

 class SelectSort
    {
        private void Func(int[] n)
        {
            int temp = 0; //临时变量

            for (int i = 0; i < n.Length; i++)
            {
                int minNum = n[i];  //基准数据
                   int k = i;
                for (int j = i+1; j < n.Length; j++)
                {
                    if (minNum > n[j])
                    {
                        minNum = n[j];
                        k = j;
                    }
                }

                if (k > i)
                {
                    temp = n[i];
                    n[i] = minNum;
                    n[k] = temp;

                    for (int m = 0; m < n.Length; m++)
                    {
                        Console.Write(n[m] + " ");
                    }
                    Console.WriteLine();
                }
            }
            Console.ReadLine();
        }

        static void Main(string[] args)
        {
            int[] n = { 40,29,49,37,5,78,23,11,4};

            SelectSort ss = new SelectSort();
            ss.Func(n);

            //for (int m = 0; m < n.Length; m++)
            //{
            //    Console.Write(n[m] + " ");
            //}
            //Console.ReadLine();
        }
    }

 

 

 

转载于:https://www.cnblogs.com/jiajiayuan/archive/2012/08/31/2665611.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/110333.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 5分钟入门Cinemachine智能相机系统

    5分钟入门Cinemachine智能相机系统摘要:相机是Unity世界的眼睛,一个智能相机更是能帮咱们节省大把的时间和精力。Cinemachine现在已经大量应用到各种项目中,如果你还没有用过Cinemachine,墙裂建议你来体验一下。你好,我是跟着大智学Unity的萌新,我叫小新,这是我本周的学习总结报告哦。Cinemachine入门Cinemachine入门还是很容易的,5分钟足矣,但是深入去研究里面也有很多门道。安装C…

    2022年5月28日
    43
  • 如何学习Python的一些总结

    如何学习Python的一些总结

    2021年10月23日
    42
  • overflow:hidden作用能治住塌陷_html溢出隐藏代码

    overflow:hidden作用能治住塌陷_html溢出隐藏代码一.overflow:hidden溢出隐藏给一个元素中设置overflow:hidden,那么该元素的内容若超出了给定的宽度和高度属性,那么超出的部分将会被隐藏,不占位。/*css样式*/<styletype=”text/css”>div{width:150px;height:60px;background:skyblue; overflo…

    2025年5月27日
    0
  • css经典布局——双飞翼布局

    圣杯布局的出现是来自由MatthewLevine在2006年写的一篇文章《InSearchoftheHolyGrail》,在国内最早是淘宝UED的工程师(玉伯大大)对圣杯布局改进并传播开来,在中国的叫法是双飞翼布局。圣杯布局和双飞翼布局达到的效果基本相同,都是侧边两栏宽度固定,中间栏宽度自适应。主要的不同之处就是在解决中间部分…

    2022年4月5日
    61
  • 微信H5×××APP下载链接被屏蔽的解决办法[通俗易懂]

    微信H5×××APP下载链接被屏蔽的解决办法[通俗易懂]微信H5×××APP下载链接被屏蔽的解决办法

    2022年4月22日
    62
  • mybatis的逆向工程怎么实现_列举创建连接的方法

    mybatis的逆向工程怎么实现_列举创建连接的方法Mybatis逆向工程创建方法1.首先利用数据库的可视化工具新建一张表。2.打开IDEA新建一个项目。3.导入pom.xml所需要的依赖文件。&amp;lt;?xmlversion=&quot;1.0&quot;encoding=&quot;UTF-8&quot;?&amp;gt;&amp;lt;projectxmlns=&quot;http://maven.apache.org/POM/4.0.0&quo

    2022年8月21日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号