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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 独立成分分析 ( ICA ) 与主成分分析 ( PCA ) 的区别「建议收藏」

    独立成分分析 ( ICA ) 与主成分分析 ( PCA ) 的区别「建议收藏」1.前言参考资料:https://www.zhihu.com/question/28845451书上写的是:1.主成分分析假设源信号间彼此非相关,独立成分分析假设源信号间彼此独立。2.主成分分析认为主元之间彼此正交,样本呈高斯分布;独立成分分析则不要求样本呈高斯分布。在利用最大化信息熵的方法进行独立成分分析的时候,需要为源信号假定一个概率密度分布函数g’,进而找出使得g(Y)=g…

    2022年5月13日
  • PD快速充电协议(转)[通俗易懂]

    PD快速充电协议(转)[通俗易懂]来源-作者@:http://www.elecfans.com/d/647097.html建议读者阅读原文,确保获得完整的信息1.PD充电协议是什么意思    PD充电协议是USB-IF组织公布的功率传输协议,它可以使目前默认最大功率5V/2A的type-c接口提高到100W,同时谷歌宣布Android7.0以上的手机搭载的快充协议必须支持PD协议,意在统一快充市场。2.PD协议快充是什么意思   …

    2022年10月23日
  • 【Electronics】数字电路实验——交通灯设计

    【Electronics】数字电路实验——交通灯设计数字电路实验——交通灯设计1.内容摘要2.设计任务及要求3.方案比较方案一:方案二:4.单元电路的工作原理4.1单位时间模块4.2二分频信号产生4.3交通灯控制电路模块4.4倒计时数码管显示模块5.拓展部分:手动设置单位时间模块5.1手动设置二、三分频切换模块5.2手动设置数码管倒计时电路相应的切换6.注意事项7.元器件清单8.参考文献1.内容摘要  &nbsp…

    2022年7月12日
  • Redis 6379端口无法telnet登陆

    Redis 6379端口无法telnet登陆一、现象:Redis所在服务器无法telnet 二、问题原因  redis-server默认开放的127.0.0.1IP地址需要修改为0.0.0.0才可以被其他机器访问三、解决办法(Windows)  1,在Redis安装目录下找到配置文件 redis.windows.config  2,修改bind127.0.0.1改为bind0.0.0.0    3,重启Redis…

    2022年5月2日
  • hdfs的命令_hbase shell命令

    hdfs的命令_hbase shell命令hdfs命令InthislessononApacheHadoopHDFScommands,wewillgothroughthemostcommoncommandswhichareusedforHadoopadministrationandtomanagefilespresentonaHadoopcluster.在本课程中,有关Apach…

    2022年10月4日
  • pccharm激活码[在线序列号]

    pccharm激活码[在线序列号],https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月19日

发表回复

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

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