快速排序

//A1.java

public class A1 {

	private final static int N = 10;

	public static void main(String[] args) {
		int a[] = new int[N];
		create(a);
		print(a);
		QuickSort(a, 0, N - 1);
		print(a);
	}

	// 快速排序主函数
	public static void QuickSort(int a[], int low, int high) {
		if (low < high) {
			int middle = exec(a, low, high);
			QuickSort(a, low, middle - 1);
			QuickSort(a, middle + 1, high);
		}
	}

	// 找到分界
	public static int exec(int a[], int low, int high) {
		int b = 1;
		while (low < high) {
			if (a[low] > a[high]) {
				swap(a, low, high);
				b = (b == 1) ? 0 : 1;
			}
			switch (b) {
			case 0:
				low++;
				break;
			case 1:
				high--;
				break;
			}
		}
		return low;// return high; 结果一样
	}

	// 生成随机数组
	public static void create(int a[]) {
		for (int i = 0; i < N; i++) {
			a[i] = (int) (Math.random() * 50);
		}
	}

	// 显示数组
	public static void print(int a[]) {
		for (int i = 0; i < N; i++) {
			System.out.print(a[i] + " ");
		}
		System.out.println();
	}

	// 交换
	public static void swap(int a[], int p1, int p2) {
		a[p1] = a[p2] + 0 * (a[p2] = a[p1]);
	}
}

 

运行结果:

 

47 49 23 48 14 36 15 33 46 29
14 15 23 29 33 36 46 47 48 49

你可能感兴趣的:(快速排序)