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)


相关推荐

  • JAVA中字符串和数组做参数传递的情况

    JAVA中字符串和数组做参数传递的情况首先明确的一点就是在java中只有值传递!只有值传递!理论依据来自《thinkinjava》。接下来就是具体说明为何java只有值传递。因为java中有基本类型和引用类型两种数据类型,再加上String这个特殊的类型,所以主要从三个方面就行解释。1.基本数据类型先看代码publicclassDemo01{publicvoidchange(inta){System.out.println(“副本a的初始…

  • route命令linux详解,route命令详解与使用实例

    route命令linux详解,route命令详解与使用实例route命令用于在本地IP路由表中显示和修改条目。使用不带参数的ROUTE可以显示帮助。语法:route[-f][-p][command[destination][masknetmask][gateway][metric][ifinterface]参数说明:-f清除所有不是主路由(子网掩码为255.255.255.255的路由)、环回网络路由(目标为127.0.0.0,子网掩…

  • log4j2.xml配置文件详解_log4j配置日志文件目录

    log4j2.xml配置文件详解_log4j配置日志文件目录log4j.xml配置文件详解一log4j.xml配置<?xmlversion=”1.0″encoding=”UTF-8″?><!DOCTYPElog4j:configurationSYSTEM”log4j.dtd”><log4j:configuration><!–将日志信息输出到控制台–>&lt…

  • ‘utf-8’ codec can’t decode byte 0xff in position 0: invalid start byte[通俗易懂]

    ‘utf-8’ codec can’t decode byte 0xff in position 0: invalid start byte[通俗易懂]‘utf-8’codeccan’tdecodebyte0xffinposition0:invalidstartbyte觉得有用的话,欢迎一起讨论相互学习~FollowMe今天使用语句image_raw_data_jpg=tf.gfile.FastGFile(‘../test_images/test_1.jpg’,’r’).read()读取图片文件的时候遇到了以下问题:’

  • python3反爬虫原理与绕过实战 网盘_Python 3反爬虫原理与绕过实战「建议收藏」

    第1章 开发环境配置11.1 操作系统的选择11.1.1 Ubuntu简介11.1.2 VirtualBox的安装21.1.3 安装Ubuntu31.1.4 全屏设置81.1.5 Python设置91.2 练习平台Steamboat101.2.1 安装Docker111.2.2 安装Steamboat121.2.3 Steamboat使用说明141.3 第三…

  • 计算机三级-数据库技术

    计算机三级-数据库技术三级数据库技术知识点总结1数据字典是对系统种各类数据描述的集合,包括数据项,数据结构,数据流,数据存储和处理过程五个部分2数据模型的三要素:数据结构、数据操作和完整性约束3数据库系统:一般由数据库、操作系统、数据库管理系统(及其工具)、应用系统、数据库管理人员和用户构成4数据模型:数据模型是数据库系统的数学形式框架,是数据库系统的核心和基础5数据模型的分类:概念模型,也称信息…

发表回复

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

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