62,614
社区成员
发帖
与我相关
我的任务
分享
package com.sort;
import java.util.Random;
public class QuickSort {
public static void main(String[] args) {
// int a[] = new int[] { 100, 99, 98, 97, 96, 95, 94, 93, 92, 91, 90,
// 89, 88, 87, 86, 85, 84, 83, 82, 81, 80, 79,
// 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62,
// 61, 60, 59, 58, 57, 56, 55, 54, 53,
// 52, 51, 0, 49, 48, 47, 46, 45, 44 };
//随机数生成数组
int a[] = new int[50];
for (int i = 0; i < a.length; i++) {
int m = new Random().nextInt(100);
a[i] = m;
}
System.out.println("数组长度" + a.length);
start(a);// 快速排序
// 输出排序结果
System.out.print("[ ");
for (int i = 0; i < a.length; i++) {
System.out.print(a[i] + " ");
}
System.out.println("]");
System.out.println();
}
private static void start(int a[]) {
if (a.length > 0)
quickSort(a, 0, a.length - 1);
else
System.out.println("Error:输入的数据有误!");
}
private static void quickSort(int a[], int left, int right) {
if (left < right) {
int i = getMiddleValue(a, left, right);
quickSort(a, 0, i - 1);
quickSort(a, i + 1, right);
}
}
private static int getMiddleValue(int a[], int left, int right) {
int i = left, j = right;
int key = a[left];
while (i != j) {
while (i < j && a[j] >= key) {
j--;
}
a[i] = a[j];
while (i < j && a[i] <= key) {
i++;
}
a[j] = a[i];
}
a[i] = key;
return i;
}
}