本文由中国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
{
public class QuickSort
{
public QuickSort( )
{
}
private void Swap( ref
int i,ref
int j )
integer
{
int t;
t=i;
i=j;
j=t;
}
public void Sort( int [] list,
int low,
int high )
{
if( high<=low )
{
return;
}
else if ( high==low+1 )
{
if( list[low]>list[high] )
{
Swap( ref list[low],ref list[high] );
return;
}
}
myQuickSort( list,low,high );
}
public void myQuickSort( int [] list,
int low,
int high )
{
if( low
本文由中国C#技术学习中心整理 如果你对本文有不明之处请到技术论坛讨论!
|