package 快速排序;
//取数列一个值,将数列按照 ({小} 值 {大})的顺序排列,再运用递归,分别对{小}{大}运用该方法排序
public class QuickSort {
/**
* 取中间值
* @param arr
* @param low
* @param hight
* @return low
*/
public QuickSort() {
// TODO Auto-generated constructor stub
}
static int getMiddle(int[] arr, int low, int hight) {
// 以第一个值作为中间值
int temp = arr[low];
while (low < hight) {
//自右向左找出比temp小的值并移到左边
while (low < hight && arr[hight] >= temp) {
hight--;
}
arr[low] = arr[hight];
//自坐向右找出比temp大的值并移到右边
while(low<hight && arr[low]<=temp){
low++;
}
arr[hight] = arr[low];
}
arr[low]= temp;
//返回中间坐标
return low;
}
/**
*
* @param arr 所要排序的数组
* @param low 排序的起始脚标
* @param hight 排序的结束脚标
*/
void quickSort(int []arr,int low,int hight){
if(low<hight){
int mid = getMiddle(arr, low, hight);
//左半部分排序
quickSort(arr, low, mid-1);
//右半部分排序
quickSort(arr, mid+1, hight);
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
int arr[] = {54,98,6,2,5,8,9,7,9,5,4,98,6,5,3,15,98,65,97,54,54};
QuickSort d = new QuickSort();
d.quickSort(arr, 0, arr.length-1);
for(int i :arr){
System.out.print(i+"\t");
}
}
}