public void doQuickSort(String scenario, int[] arrayToSort) {
    cycleCount = 0;

    this.tempArraySort = arrayToSort;

    DummyDataClass.printOutPut(tempArraySort, "Before Sorting");

    quickSort(0, tempArraySort.length - 1);

    System.out.println("Insertion Sort Scenario : " + scenario);
    System.out.println("Total Number of elements : " + arrayToSort.length);
    System.out.println("Total Number of Iterations : " + cycleCount);
    System.out.println("Avg : " + cycleCount / arrayToSort.length);
    DummyDataClass.printOutPut(tempArraySort, "Final sorted Array: ");
  }
  public void quickSort(int lowIndex, int highIndex) {
    int i = lowIndex, j = highIndex;

    int mid = (lowIndex + ((highIndex - lowIndex) / 2));

    while (i < j) {

      System.out.println(
          "LowIndex : " + lowIndex + " MidIndex : " + mid + " HighIndex : " + highIndex);
      System.out.println(
          "LowValue : "
              + tempArraySort[lowIndex]
              + " MidValue : "
              + tempArraySort[mid]
              + " HighValue : "
              + tempArraySort[highIndex]);

      while (tempArraySort[mid] > tempArraySort[i]) {
        i++;
        cycleCount++;
      }

      while (tempArraySort[mid] < tempArraySort[j]) {
        j--;
        cycleCount++;
      }

      if (i < j) {
        DummyDataClass.swap(tempArraySort, i, j);
        i++;
        j--;
      }

      // System.out.println("Mid index :" + mid +" Mid Value : " +tempArraySort[mid]);
      cycleCount++;
      DummyDataClass.printOutPut(tempArraySort, "Pass :" + cycleCount);

      if (lowIndex < j) {
        quickSort(lowIndex, j);
      }

      if (highIndex < i) {
        quickSort(i, highIndex);
      }
    }
  }