手机
当前位置:查字典教程网 >编程开发 >C#教程 >C#排序算法之快速排序
C#排序算法之快速排序
摘要:快速排序实现:复制代码代码如下:namespaceQuickSort{classQuickSort{publicstaticvoidSort...

快速排序实现:

复制代码 代码如下:

namespace QuickSort

{

class QuickSort

{

public static void Sort(int[] array)

{

DoSort(array,0, array.Length-1);

}

private static void DoSort( int[] array, int start, int end)

{

if( start < end)

{

int temp = Partition(array, start, end);

DoSort(array, start, temp-1);

DoSort(array, temp + 1, end);

}

}

private static int Partition(int[] array,int start, int end)

{

int index = start - 1;

for( var i=start; i< end; i++)

{

if( array[i] < array[end])

{

index++;

Swap(array, index, i);

}

}

Swap(array, index +1, end);

return index + 1;

}

private static void Swap(int[] array, int index1, int index2)

{

var temp = array[index1];

array[index1] = array[index2];

array[index2] = temp;

}

}

}

以上即为快速排序的代码,这里有两个重要的方法:

1、Partition:该方法是以数组的某个元素为参考元素(轴元素或主元素),将数组划分成三个区域:

【<=参考元素】【参考元素】【>=参考元素】

2. DoSort:该方法会调用Partition将数组分区,并在新产生的子数组上递归调用最终达到有序的目的。

上面给出的代码是以数组最后一个元素作为参考元素,这仅是参考元素选取的方式之一。我们也可以随即选取数组的元素或者数组中间的元素作为参考元素。事实上参考元素的选取对快速排序的性能有很大影响。如果每次选取的参考元素能将数组分成相对均衡的区域,快速排序将成为最快的排序算法;但在另一种极端情形下,每次分成的数组都是1和n-1的关系,快速排序又会变的很慢。具体的性能数据后面再来讨论研究。

【C#排序算法之快速排序】相关文章:

C# 操作符之二 算数操作符

C#根据年月日计算星期几的函数小例子

C# 批处理调用方法

C#数据结构与算法揭秘二 线性结构

C#中使用快速排序按文件创建时间将文件排序的源码

c#汉诺塔的递归算法与解析

C#序列化成XML注意细节

C#归并排序的实现方法(递归,非递归,自然归并)

sort page 排序和分页的小例子

C#中读写INI文件的方法例子

精品推荐
分类导航