# Sort Detective - Solution

Stuck on that homework assignment involving SortDetective.jar? No need to worry! ☕

This tutorial is “certifiably” Mac Friendly. Whoop. 

## Files Provided To You 🔗︎

• `SortDetective.jar`, which looks something like this:

The purpose of this little HW assignment is to correctly identify the 6 Greek letters (Alpha, Beta, Gamma, Delta, Epsilon, & Zeta) with their matching sorting method (selection, insertion, bubble, quick, merge, & heap sort).

Head over to the Java Decompiler page located at `jd.benow.ca`) and download the `ZIP` file for the `JD-GUI`.

## Step 2 - Launch JD-GUI 🔗︎

Now that you’ve downloaded the `ZIP` file, unzip it and launch the application.

# Step 4 - Find the Formula That Determines The Order 🔗︎

`SortDetective.jar` determines the sorting method ordering according to your student ID.

It has an array defined with 5 different orders that the sorting methods CAN be placed in. See `Line 256` in the `SortDetective.class`.

Zooming in…

With some minor searches, we find out that the method `experimentOrders` uses the variable `selectedPermutation` to determine what array value it will use to determine the order.

This redirects us to the `setStudentID()` method. So now we’ve figured out the ordering all just depends on the formula the program uses.

## Step 5 - Apply Formula To `experimentOrders` 🔗︎

So, in my case, my student ID is `00319124`.

Using the formula, we can determine that the value of `selectedPermutation` is going to be `2` for me since `319124` / `10` % `5`= `2.4` or simply `2` for `int`. That means that the array value for `experimentOrders` will be `2`, making a match to the order found on `Line 7` when zooming in to `Line 256` in `SortDetective.class`.

Remember, arrays are ordered like `{0,1,2}`. So `experimentOrders[2]` would be the 3rd value in the array.

There we go! Just like that, I now know for sure that the ordering of the Greek letters for me would go

• Alpha - Quick Sort
• Beta - Selection Sort
• Gamma - Merge Sort
• Delta - Bubble Sort
• Epsilon - Insertion Sort
• Zeta - Heap Sort