源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

C#排序算法之快速排序

  • 时间:2022-02-24 10:43 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:C#排序算法之快速排序
快速排序实现:
[u]复制代码[/u] 代码如下:
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的关系,快速排序又会变的很慢。具体的性能数据后面再来讨论研究。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部