private static int sortUtil(int[] array, int low, int high) {
    int key = array[low];
    while(low < high) {
      while(high > low && array[high] >= key) {
        high--;
      }
      array[low] = array[high];
      while(low < high && array[low] <= key) {
        low++;
      }
      array[high] = array[low];
      printArray(array);
    }
    array[high] = key;
    return high;
  }