刚才化了几分钟搞定的一个快排序
/**
* 快速排序法
* @author 李见黎
*2012-3-27
*/
class QuickSort
{
public void QuickSortFun(int []arr)
{
QSort(arr, 0, arr.length-1);
}
/**
* 递归实现快排序
* @param 待排序数组
* @param 低位置
* @param 高位置
*/
public void QSort(int []arr,int low,int high)
{
if(low<high)
{
int tempt=Partition(arr, low, high);
QSort(arr, low, tempt-1);
QSort(arr, tempt+1, high);
}
}
/**
* 划分
* @return 一次划分完之后所得到的标识的位置
*/
public int Partition(int arr[],int low,int high)
{
int temp=arr[(low+high)/2];
while(low<high)
{
while(low<high&&arr[high]>=temp)
--high;
arr[low]=arr[high];
while(low<high&&arr[low]<=temp)
++low;
arr[high]=arr[low];
}
arr[(low+high)/2]=temp;
return low;
}
} |
|