博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#之选择排序
阅读量:6977 次
发布时间:2019-06-27

本文共 1828 字,大约阅读时间需要 6 分钟。

常见的选择排序细分为简单选择排序、树形选择排序(锦标赛排序)、堆排序。本章所说的选择排序为简单选择排序。

选择排序基本思想:每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。
选择排序的特点:
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

你可能感兴趣的文章
Unity3D 材料
查看>>
ControlButton按钮事件
查看>>
HTTP 缓存
查看>>
Apache2.4+Tomcat7集群搭建
查看>>
Linux内置的审计跟踪工具:last命令
查看>>
Nginx自定义模块编写:根据post参数路由到不同服务器
查看>>
Lamp源码安装
查看>>
Linux0.00内核为什么要自己设置0x80号陷阱门来调用write_char过程?
查看>>
mysql数据库备份、恢复文档
查看>>
在linux上MySQL的三种安装方式
查看>>
cocos2dx 场景的切换
查看>>
Java用for循环Map
查看>>
让你提升命令行效率的 Bash 快捷键
查看>>
Python运维项目中用到的redis经验及数据类型
查看>>
一些要注意的地方
查看>>
android Spinner 例子
查看>>
2013年10月1日C#随机数
查看>>
fastJson结合Nutz.Mapl的进阶应用
查看>>
使用react心得
查看>>
大一新生,你为何逃课?
查看>>