C语言 百分网手机站

C#排序算法之快速排序

时间:2020-09-10 19:55:40 C语言 我要投稿

C#排序算法之快速排序

  C#排序算法怎样快速排序呢?下面小编为大家整理了C#排序算法之快速排序,希望能帮到大家!

  快速排序实现:

  复制代码 代码如下:

  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#版的实现示例09-30

C语言快速排序算法及代码10-06

C语言中使用快速排序算法对元素排序的实例10-02

c语言中冒泡排序、插入排序、选择排序算法比较10-05

c语言的排序算法10-05

PHP排序算法类讲解09-30

C语言冒泡排序算法实例11-21

c语言排序的几种算法10-03

c++快速排序详解10-05

php如何实现快速排序09-02