I tried different approaches.

Changing the return type of quickSort to int and adding the parameter “int numPivots” to the method. Then I added numPivots++; after the call of the partition method and returned the numPivots at the end. When passing 0 as an argument the returned value in my main method was 1. This makes sense since it is the first value that will be returned after all the recursions. I just cant get my head around what I have to change to make this work.

Creating an “ArrayList pivots” in the main method and passing it as an Argument to quickSort and from there to partition. I filled it with all the pivots but still didnt get the right result. This was a weird approach, but I got devestaded.

Creating an instance variable and methods to increase it / get its value. This didnt work either and felt kind of stupid.

Here is the code

public static void quickSort(int[] arr, int start, int end){ int partition = partition(arr, start, end); if(partition-1>start) { quickSort(arr, start, partition - 1); } if(partition+1<end) { quickSort(arr, partition + 1, end); } } public static int partition(int[] arr, int start, int end){ int pivot = arr[end]; //checks if left pointer < pivot for(int i=start; i<end; i++){ if(arr[i]<pivot){ int temp= arr[start]; arr[start]=arr[i]; arr[i]=temp; start++; } } //switches pivots int temp = arr[start]; arr[start] = pivot; arr[end] = temp; return start; }

Also: I thought quickSort would work with 2 Pointers, a left pointer and a right pointer. After failing to write my own quickSort algorithm I simply took this one from a tutorial. This confuses me because it doesn’t use a rightPointer. I took pen and paper to follow the steps and I think I got how it works but is it the same algorithm as explained here?

I knoiw these are a lot of questions. Thank you for your time!

## Answer

Solved it like this:

class CountObject{ int count; public CountObject(int count){ this.count=count; } public void increaseCount (){ this.count++; } public int getCount() { return count; }

}