快速排序
概述
快速的升序排列(注意边界)
代码
package com.lilei.myes.es.pack1114;
import java.util.Random;
public class quick_sort {
public static void main(String[] args) {
Random rand = new Random();
int[] array = new int[]{99, 55, 0, 89, 0, 8, 80, 19, 68, 61};
for (int i = 0; i < array.length; i++)
array[i] = rand.nextInt(100);
for (int v : array)
System.out.print(v + ",");
System.out.println();
sort(array, 0, array.length - 1);
for (int v : array)
System.out.print(v + ",");
}
static void sort(int[] array, int left, int right) {
if (left<right){
int mid = (left + right) / 2;
int value = array[mid];
int p_left = left;
int p_right = right;
while(p_left < p_right){
while(p_left < p_right && array[p_left] < value)
p_left++;
while(p_right>= left && array[p_right] >= value)
p_right--;
if (p_left < p_right){
int tmp = array[p_left];
array[p_left] = array[p_right];
array[p_right] = tmp;
p_left++;
p_right--;
}
}
if(p_right< left){
array[mid] = array[left];
array[left] = value;
sort(array,left+1,right);
}else{
if (p_left == p_right){
if(array[p_left] >= value){
sort(array,left,p_left-1);
sort(array,p_left,right);
}else{
sort(array,left,p_left);
sort(array,p_left+1,right);
}
}else{
sort(array,left,p_right);
sort(array,p_left,right);
}
}
}
}
}
浙公网安备 33010602011771号