C#常用排序实现原理及案例

前言

  针对数组排序暂且不区分数组的数据类型情况下,常用排序方法如冒泡排序法,选择排序法,插入排序法以及快速排序法,下面将逐一展示这几种排序方法的实现。

冒泡排序法

  方法定义如下所示:

设计原理说明:循环判断当前数组的元素和该索引之后的数组元素大小,并互换位置,保证前面的元素比后面所有的元素要么都大,要么都小,以此类推;

主程序main执行代码如下:

对于10万笔数据,执行时间如下:

选择排序

 选择排序的实现方法与冒泡排序方法类似,代码如下所示:

实现原理即先把数组元素第一个作为最大或是最小元素赋值给temp,循环后面的所有元素进行比较,找到比第一个元素大或是小的元素,跟temp互换,以此类推;

对于10万比数据的快速排序时间如下结果所示,和冒泡排序方法的时间基本相同

插入排序法

 实现代码如下所示:

插入排序实现的原理如下分析:

⒈ 从第一个元素开始,该元素可以认为已经被排序
⒉ 取出下一个元素,在已经排序的元素序列中从后向前扫描
⒊ 如果该元素(已排序)大于新元素,将该元素移到下一位置
⒋ 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置
⒌ 将新元素插入到下一位置中
⒍ 重复步骤2~5
插入排序执行的结果如下所示,实际会比前面两种排序的时间要短。

快速排序法

快速排序方法如下所示:

 

快速排序实现原理:

1.先把数组的第一个元素作为分区值,从数组的最高位递减遍历数组判断如数组元素大于当前分区值递减当前数组最高位索引;然后从数组最低位递增遍历,判断数组元素如小于等于当前分区值则递增当前数组元素最小索引值;并确保数组元素最小索引值不能超过数组元素最大索引值;

2.对以上执行过程得出的数组最小索引值作为中间值分区实现递归;

执行结果如下所示:

10万笔数据快速排序基本秒执行;对于几百万笔数据可想而知。掌握快速排序的要领即学会分区值的遍历执行。希望对您的学习有所帮助,喜欢的给个赞吧。

posted @ 2018-01-23 16:33  念冬的叶子  阅读(211)  评论(0编辑  收藏  举报