[算法]快速排序

今天主要通过互联网回顾了下快速排序以及堆排序算法,好久不用,忘记的差不多了。

这篇文章很有用http://blog.csdn.net/morewindows/article/details/6684558

public class QuickSort {
	private static int[] array = {1,4,2,8,6,9,0};
	private static int size = array.length;
	
	private int adjustArray(int leftIndex, int rightIndex) {
		int key = array[leftIndex];
		while (leftIndex < rightIndex) {
			while (leftIndex < rightIndex && key >= array[rightIndex]) {
				rightIndex--;
			}
			if (leftIndex < rightIndex) {
				array[leftIndex] = array[rightIndex];
				leftIndex++;
			}
			while (leftIndex < rightIndex && key < array[leftIndex]) {
				leftIndex++;
			}
			if (leftIndex < rightIndex) {
				array[rightIndex] = array[leftIndex];
				rightIndex--;
			}
		}
		array[leftIndex] = key;
		return leftIndex;
	}
	
	private void quickSort(int leftIndex, int rightIndex) {
		if (leftIndex < rightIndex) {
			int i = adjustArray(leftIndex, rightIndex);
			quickSort(leftIndex, i - 1); //分治思想
			quickSort(i + 1, rightIndex);
		}
	}
	
	public void test() {
		quickSort(0, size - 1);
		for (int i : array) {
			System.out.println(i);
		}
	}
}


你可能感兴趣的:(算法,快排)