高速排序java语言实现

本博客不再更新,很多其它精彩内容请訪问我的独立博客


高速排序是非常重要的排序算法,可是我在学的时候发现网上没有特别好的样例所以自己动手写了一个。

自己动手丰衣足食。


package sort;

import java.util.Random;

public class QuickSort {
	@SuppressWarnings("unused")
	public boolean initTestArray(int[] testArray) {// 初始化testArray
		if (testArray == null)
			return false;
		Random random = new Random();
		for (int i = 0; i < testArray.length; i++) {
			testArray[i] = random.nextInt(200);
		}
		return true;
	}

	public boolean printTestArray(int[] testArray) {// 打印testArray中的内容
		if (testArray == null)
			return false;
		for (int i = 0; i < testArray.length; i++) {
			System.out.print(testArray[i] + ",");
		}
		System.out.println();
		return true;
	}

	public static boolean quickSort(int[] testArray, int left, int right) {
		if(testArray==null)
			return false;
		if (left < right) {
			int pivotpos = QuickSort.partition(testArray, left, right);
			QuickSort.quickSort(testArray, left, pivotpos - 1);
			QuickSort.quickSort(testArray, pivotpos + 1, right);
		}
		return true;
	}

	public static int partition(int[] testArray, int low, int high) {
		int i = low, j = high, pivot = testArray[low],temp=0;
		while (i < j) {
			while (i < j && testArray[j] >= pivot)
				j--;
			while (i < j && testArray[i] <= pivot)
				i++;
			temp = testArray[i];
			testArray[i] = testArray[j];
			testArray[j] = temp;
		}
		testArray[low] = testArray[i];
		testArray[i] = pivot;
		return i;
	}

	public static void main(String args[]) {
		int[] testArray = new int[20];
		QuickSort quickSort = new QuickSort();
		quickSort.initTestArray(testArray);
		System.out.println("排序前:");
		quickSort.printTestArray(testArray);
		if(!QuickSort.quickSort(testArray, 0, testArray.length - 1))
			System.out.println("排序出错!

"); System.out.println("排序后:"); quickSort.printTestArray(testArray); } }



posted @ 2017-05-05 12:42  yfceshi  阅读(145)  评论(0编辑  收藏  举报