快速排序-
package eleven;
import java.util.Random;
public class QuickSort {
/**
* 快速排序
*
* @param num
* @param left
* @param right
* @return
*/
public static void printArray(int num[]) {
for (int i = 0; i < num.length; i++) {
System.out.print(num[i] + " ");
}
System.out.println();
}
/**
* 采用随机key 当数组较少时,采用插入排序
*
* @param num
* @param left
* @param right
* @return
*/
public static int[] quickSort(int[] num, int left, int right) {
if (left < right) {
// 采用随机数作为key,不采用第一个值,做法为:生成随机数index,将其余第一个数交换
// int randomKey=Math.random()
int randowKey = (int) (Math.random() * (right - left) + left);
System.out.println(randowKey);
int tmp = num[left];
num[left] = num[randowKey];
num[randowKey] = tmp;
int key = num[left];
int i = left;
int j = right;
while (i < j) {
while (i < j && num[j] > key) {
j--;
}
num[i] = num[j];
while (i < j && num[i] <= key) {
i++;
}
num[j] = num[i];
}
num[i] = key;
printArray(num);
quickSort(num, left, i - 1);
quickSort(num, i + 1, right);
}
return num;
}
public static void main(String[] args) {
int[] num = { 72, 6, 57, 88, 69, 56, 43, 67, 23, 87, 23, 12, 76, 88 };
quickSort(num, 0, num.length - 1);
}
}
6 12 57 88 69 56 43 67 23 87 23 72 76 88
6 12 23 23 43 56 57 67 69 87 88 72 76 88
6 12 23 23 43 56 57 67 69 87 88 72 76 88
6 12 23 23 43 56 57 67 69 72 88 87 76 88
6 12 23 23 43 56 57 67 69 72 88 87 76 88
6 12 23 23 43 56 57 67 69 72 88 87 76 88
6 12 23 23 43 56 57 67 69 72 88 87 76 88
6 12 23 23 43 56 57 67 69 72 76 87 88 88

浙公网安备 33010602011771号