设为首页
加入收藏
联系我们
首页 基础教程 技术文档 实例分析 数 据 库 疑难杂症 ASP.NET 七夕许愿树 技术论坛
<%-- 最新动态 Begin --%> <%-- 最新动态 End --%>
最新文章
 C#摄像头编程实例
 C#下用P2P技术实现点…
 Asp.net(c#)数…
 SQL Server数据…
 .NET牛人应该知道些什…
 NET牛人应该知道些什么
 SQL Server S…
 备份指定表到另一数据库
 SQLSERVER中快速…
 ASP.NET中url传…
 ASP.NET自动给UR…
 ASP.NET 2.0防…
 ASP.NET 2.0 …
 如何解决ASP.net中…
 sql server 与…
<%-- 最新动态 Begin --%> <%-- 最新动态 End --%>
推荐文章
 关于C#中的REF和黓认…
 读书笔记c#高级编程 委…
 【算法】C#快速排序类
 Visual C#的SQ…
 C#中调用API
 Infragistics…
 C#接口转换
 C#读取设备信息
 用.net操作word
 C# MessageBo…
 Visual C#中的数…
 雅虎公司C#笔试题,看看…
 C#.NET使用NHib…
 .net学习之运算符重载…
 Visual C# 3.…
<%-- 最新动态 Begin --%> <%-- 最新动态 End --%>
热门文章
 ADO.Net与ADO在…
 开发ASP.NET下的M…
 用C#+XMI技术进行U…
 什么是虚拟机?
 C#基础全接触
 C#学习第一天
 雅虎公司C#笔试题,看看…
 C#语言初级入门(1)
 C#中利用正则表达式实现…
 远程重启计算机(C#)
 用.net操作word
 什么是B/S三层?
 VB和C# 语法对比图 …
 Visual C#常用函…
 Visual C#的SQ…
【算法】C#快速排序类
阅读正文 文字大小:增大 减小  文字行距:增大 减小   双击自动滚屏
本文由中国C#技术学习中心整理  如果你对本文有不明之处请到技术论坛讨论!

快速排序的基本思想是基于分治策略的.对于输入的子序列
ap..ar,如果规模足够小则直接进行排序,否则分三步处理: 分解( Divide ):将输入的序列ap..ar划分成两个非空
子序列ap..aq和aq+1..ar,使ap..aq中任一元素的值不大于
aq+1..ar中任一元素的值. 递归求解( Conquer ):通过递归对p..aq和aq+1..ar进行排
序. 合并( Merge ):由于对分解出的两个子序列的排序是就地进
行的,所以在ap..aq和aq+1..ar都排好序后不需要执行任何计
算ap..ar就已排好序. 这个解决流程是符合分治法的基本步骤的.因此,快速排序法是
分治法的经典应用实例之一. using System; namespace VcQuickSort { /// /// ClassQuickSort 快速排序. /// 范维肖 /// public class QuickSort { public QuickSort( ) { } private void Swap( ref int i,ref int j ) //swap two integer { int t; t=i; i=j; j=t; } public void Sort( int [] list, int low, int high ) { if( high<=low ) { //only one element in array list //so it do not need sort return; } else if ( high==low+1 ) { //means two elements in array list //so we just compare them if( list[low]>list[high] ) { //exchange them Swap( ref list[low],ref list[high] ); return; } } //more than 3 elements in the arrary list //begin QuickSort myQuickSort( list,low,high ); } public void myQuickSort( int [] list, int low, int high ) { if( low//get the pivot of the arrary list int pivot; pivot=list[low]; while( low=pivot ) { high--; } if( low!=high ) { Swap( ref list[low],ref list[high] ); low++; } while( low


本文由中国C#技术学习中心整理  如果你对本文有不明之处请到技术论坛讨论!

中国C#技术交流QQ群:6337034  10976424  9383681  35248582  35248645
版权所有:中国C#技术学习中心 Copyright ? 2006-2008
建议浏览分辨率使用:1024*768分辨率
粤ICP备05002251号