快速排序中比较诡异的事情,求解释

LianyouCQ 发布于 2013/05/10 08:04
阅读 95
收藏 0

下面是快速排序java 代码,不知道哪里出问题了,未能完全排序

public class QuickSort {
	protected int patition(int[] src, int p, int q) {
		int pivot = src[p], i = p;
		for (int j = p + 1; j < q; j++) {
			if (src[j] < pivot) {
				i++;
				swap(src, j, i);
			}
		}
		swap(src, p, i);

		return i;
	}

	private void swap(int[] src, int p, int i) {
		int tmp = src[p];
		src[p] = src[i];
		src[i] = tmp;
	}

	public void sort(int[] src, int p, int r) {
		if (p < r) {
			int pivot = patition(src, p, r);
			sort(src, p, pivot - 1);
			sort(src, pivot + 1, r);
		}
	}
	public static void main(String[] args) {
		QuickSort qSort = new QuickSort();
		// int[] src = {1, 43, 324, 23,0, 63, 23, 653, 1000};
		int[] src = {32, 13, 74, 2, 10, 1, 0, 6, 31, 20, 18, 17, 19, 24};
		qSort.sort(src, 0, src.length);
		for (int i : src) {
			System.out.print(i + "  ");
		}
	}
}
# 输出结果为:

1  2  6  10  13  0  17  20  18  24  31  19  32  74  

==========================================================

实在是不懂为什么没有成功,求解释呀


加载中
返回顶部
顶部