/**
*
* 快速排序:
* 核心思想:
* 先找到首元素在排好序的数组中的位置,分成俩部分,
* 分别在各部分找到首元素在排好序的个部分中的位置,迭代
*
* 1.temp = array[low];
* 2.while(low<high){
* //必须先和最大的比较,这样才不会丢失temp值
* while(low<high && array[high]>= temp){
* high --;
* }
* array[low] = array[high];
*
* while(low<high && array[low]<= temp){
* low ++;
* }
* array[high] = array[low];
* }
* array[low] = temp;
* @param array
*/
public void quickSort(int array[]) {
if(array != null && array.length !=0) {
quickSort(array,0,array.length-1);
}
}
/**
* 快速排序:首先找到基数元素在排好序的数组的位置,然后分别迭代排序
* @param array
* @param low
* @param high
*/
private void quickSort(int[] array, int low, int high) {
if(low<high) {
int middle = getMiddle(array,low,high);
quickSort(array,0,middle-1);
quickSort(array,middle+1,high);
}
}
/**
*
* @param array
* @param low
* @param high
* @return
*/
private int getMiddle(int[] array, int low, int high) {
int temp = array[low];
while(low<high) {
while(low<high && array[high] >= temp) {
high --;
}
array[low] = array[high];
while(low<high && array[low] <= temp) {
low ++;
}
array[high] = array[low];
}
array[high] = temp;
return low;
}
快速排序
最新推荐文章于 2023-12-01 23:14:38 发布