您的位置:首页 > 理论基础 > 数据结构算法

快速排序 (QuickSort) Java数据结构与算法

2010-07-18 21:35 246 查看
快速排序 (QuickSort) Java数据结构与算法

源代码:

/**
*
* @author sunnyykn
*/
class ArrayIns
{
private long[] theArray;
private int nElems;
public ArrayIns(int max)
{
theArray = new long[max];
nElems = 0;
}
public void insert(long value)
{
theArray[nElems] = value;
nElems ++;
}
public void display()
{
System.out.print("A = ");
for(int j = 0;j < nElems;j ++)
System.out.print(theArray[j] + " ");
System.out.println("");
}
public void quickSort()
{
recQuickSort(0,nElems - 1);
}
public void recQuickSort(int left,int right)
{
if(right - left <= 0)
return ;
else{
long pivot = theArray[right];
int  partition = partitionIt(left,right,pivot);
recQuickSort(left,partition - 1);
recQuickSort(partition + 1,right);
}
}
public int partitionIt(int left,int right,long pivot)
{
int leftPtr = left - 1;
int rightPtr = right;
while(true)
{
while( theArray[++ leftPtr] < pivot );
while( rightPtr > 0 && theArray[-- rightPtr] > pivot );
if(leftPtr >= rightPtr)
break;
else
swap(leftPtr,rightPtr);
}
swap(leftPtr,right);
return leftPtr;
}
public void swap(int dex1,int dex2)
{
long temp = theArray[dex1];
theArray[dex1] = theArray[dex2];
theArray[dex2] = temp;
}
}
class QuickSortApp
{
public static void main(String[] args)
{
int maxSize = 16;
ArrayIns arr;
arr = new ArrayIns(maxSize);
for(int j = 0;j < maxSize;j ++)
{
long n = (int)(java.lang.Math.random()*99);
arr.insert(n);
}
arr.display();
arr.quickSort();
arr.display();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: