这几天需要用到快速排序算法,虽然以前写过作业,但也有些遗忘,于是上网搜了一下,发现虽然很多,却或多或少都有些问题,尤其是数据越界,所以我自己调了一下,以下是经过测试的快速排序的程序,希望对大家有些帮助:
public class QSort {
/**
* @author WangYu 2008-05-29
* @param pData 需要排序的数组
* @param left 左边的位置,初始值为0
* @param right 右边的位置,初始值为数组长度
*/
public static void QuickSort(int[] pData,int left,int right)
{
int i,j;
int middle,temp;
i = left;
j = right;
middle = pData[left];
while(true)
{
while((++i)<right-1 && pData[i]<middle);
while((--j)>left && pData[j]>middle);
if(i>=j)
break;
temp = pData[i];
pData[i] = pData[j];
pData[j] = temp;
}
pData[left] = pData[j];
pData[j] = middle;
if(left<j)
QuickSort(pData,left,j);
if(right>i)
QuickSort(pData,i,right);
}
public static void main(String[] args){
int[] pData = new int[10];
for(int i = 0; i< 10; i++)
pData[i] = (int)(Math.random()*100);
for(int i = 0; i<pData.length; i++)
System.out.print(pData[i]+" ");
QSort.QuickSort(pData, 0, pData.length);
System.out.println("\n***********************");
for(int i = 0; i<pData.length; i++)
System.out.print(pData[i]+" ");
}
}