private int getMiddlePosition(int[] arr, int low, int high) {
		int baseElement = arr[low];
		
		while (low < high) {
			// 如果高指针指向的元素小于中枢元素时表示找到，退出  
			while (low < high && arr[high] >= baseElement) {
				high--;
			}
			
			stepCount++;
			if (high != low) {
				arr[low] = arr[high];
				if (printable) print(" high swap", arr, high, low, stepCount);
			}
			
			// 如果低指针指向的元素大于中枢元素时表示找到了，退出
			while (low < high && arr[low] <= baseElement) {
				low++;
			}
			if (high != low) {
				arr[high] = arr[low];
				if (printable) print(" low swap", arr, low, high, stepCount);
			}
			
		}
		arr[low] = baseElement;
		
		return low;
	}