private static int partion(int[] n, int start, int end) {
		int tmp = n[start];
		while (start < end) {
			while (n[end] >= tmp && start < end) {
				end--;
			}
			if (start < end) {
				n[start++] = n[end];
			}
			while (n[start] < tmp && start < end) {
				start++;
			}
			if (start < end) {
				n[end--] = n[start];
			}
		}
		n[start] = tmp;
		return start;
	}