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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 面部表情识别系统(人脸识别技术介绍)

    利用计算机进行人脸表情的识别成为当前人脸识别研究领域的热点。本文基于先进的深度学习技术,首先应用级联分类器对人脸进行检测和定位,然后使用Xception的小型卷积神经网络实现人脸表情的实时检测。文中不仅就涉及的技术原理展开介绍,还结合Python代码进行了实验说明,并对最终的实验结果予以分析。训练的网络精度高、实时性好,最终成功应用实现了一个可以实时检测的人脸表情识别系统。

  • tess4j正确的使用 OCR

    tess4j正确的使用 OCR在官网上下载下来的tess4j的zip,初见时看的云里雾里的,原以为是个jar,直接引用就好了,结果竟是个zip。网上查一下用法,各种说法,各种菜,全是误导,自己不懂就敢瞎说…实际上使用时需要注意一下几点:一、引jar包打开压缩包,在dist下边有tess4j的jar,这个jar包在lib下也可以找到,这是关键jar。此外还需要其他好多依赖jar包,这些都可以在lib下找到。l

  • onedrive申请1T免费空间_onedrive如何升级空间

    onedrive申请1T免费空间_onedrive如何升级空间最近想要备份一下数据,但是硬盘备份容易坏不放心,百度网盘更恶心。听说Onedrive可以通过学生身份注册账号得到1T的免费空间,故尝试了一下,非常顺利。总结如下:账号注册网址:https://www.microsoft.com/zh-cn/education/products/office/default.aspx输入学生邮件地址正常注册即可查看剩余空间windows上的剩余空间查看出了问题:这里找到了一种更加通用的方法:https://zhida…

  • linux crontab 每隔10秒执行一次[通俗易懂]

    linux crontab 每隔10秒执行一次[通俗易懂]linux下定时执行任务的方法在LINUX中你应该先输入crontab-e,然后就会有个vi编辑界面,再输入03**1/clearigame2内容到里面:wq保存退出。在LINUX中,周期执行的任务一般由cron这个守护进程来处理[ps-ef|grepcron]。cron读取一个或多个配置文件,这些配置文件中包含了命令行及其调用时间。cron的配置文件称为“…

    2022年10月21日
  • 修改计算机用户名 未识别网络,电脑出现未识别的网络,无Internet访问解决办法 这几步你要了解…[通俗易懂]

    修改计算机用户名 未识别网络,电脑出现未识别的网络,无Internet访问解决办法 这几步你要了解…[通俗易懂]网卡驱动问题01在桌面的计算机图标上右键单击一下,选择【设备管理器】,然后在设备管理器页面下方找到【网络适配器】。02打开网络适配器列表,找到当前的网卡驱动,用鼠标右键点击一下,在弹出的菜单中选择【禁用】,接着再点击【启用】。好了,以上就是大致内容了,(END)更改适配器设置01在电脑桌面上找到网络图标,右键点击一下,在菜单中选择【属性】,然后会进入到网络属性的主界面。02接着,在属性界面的左侧菜…

    2022年10月14日
  • 迭代器和生成器

    迭代器可迭代的数据类型查看数据类型的所有方法可迭代协议:迭代器协议和可迭代对象判断一个数据类型是否是迭代器和可迭代对象:迭代器协议的原理1#基于迭代器协议2li=[1,2,3]

发表回复

您的电子邮箱地址不会被公开。

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