`
ruilinruirui
  • 浏览: 1050446 次
文章分类
社区版块
存档分类
最新评论

C# 快速(二分法)排序

 
阅读更多

快速(二分法)排序的思想是将数组划分为两边,以某个节点v为界(设这个节点的值为 v),在节点v左边的所有元素都小于 v, 在节点v右边的所有元素都大于v.

这样不停地划分,到最后整个数组就是有序的了。

具体分成两边的思路为(起始下标为start, 结束下标为 end):

选择v = a[end]作为中介点

先从start开始扫描,遇到a[++i] < v停下来,接着从end开始扫描a[--j] > v停下来,交换a[i]和a[j]

接着从i+1开始扫描,另一边接着从j-1开始扫描。注意边界条件if (i >= j) break; 扫描完成后就找到了v应该放得位置,交换Swap(ref a[i], ref a[end]);这样就完成了一次划分。

该算法的平均时间复杂度为nLgn,最坏的情况是n的平方。该算法适合使用于大数据量的排序:


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics