-
c#实现快速排序法
快速排序法是对冒泡排序的一种改进。它的基本思想是,通过一趟排序将待排序记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。代码如下:privatevoidswap(refintl,refintr)
{
inttemp;
temp=l;
l=r;
r=temp;
}
publicvoidSort(int[]list,intlow,inthigh)
{
intpivot;//存储分支点
intl,r;
intmid;
if(high<=low)
return;
elseif(high==low+1)
{
if(list[low]>list[high])
swap(reflist[low],reflist[high]);
return;
}
mid=(low+high)>>1;
pivot=list[mid];
swap(reflist[low],reflist[mid]);
l=low+1;
r=high;
do
{
while(l<=r&&list[l]<pivot)
l++;
while(list[r]>=pivot)
r--;
if(l<r)
swap(reflist[l],reflist[r]);
}while(l<r);
list[low]=list[r];
list[r]=pivot;
if(low+1<r)
Sort(list,low,r-1);
if(r+1<high)
Sort(list,r+1,high);
}