# Quicksort

Hello! Below is my attempt at a quicksort. Sorters are really interesting code because they can be done in so many different ways, which can make such a difference in the speed an array is sorted. Here (No longer online :(, here’s another) is a visual example from my old professor Adam Smith. From this visual guide, you’re able to see when quicksort is most and least effective. Here’s some output:  ```//
//  Quicksort2.cpp
//
//  Sorter which will sort array of random values in the "quicksort" style.
//
//  Created by Aidan Takami on 2/1/18.
//

/*
Must include iostream, cstdlib, and ctime. Site keeps deleting
these libraries thinking they are HTML tags
/*
#include
#include
#include

using namespace std;

void printArray(int r[]);
void switchValues(int r[], int, int);
void randmoArray(int r[]);
void quickSort(int r[], int, int);

//Declares the array to be sorted, as well as the const to represent the size of the array
int r;
const int SIZE = (sizeof(r)/4);

//Method to print out values of the array
void printArray(int r[])
{
int i=0;
while(i<SIZE){
cout<<r[i]<<",";
i++;
}
}

//Method to swap the values at the locations of the 2 int args, within the array provided
void switchValues(int r[],int leftSide, int rightSide){
int temp = r[leftSide];
r[leftSide] = r[rightSide];
r[rightSide] = temp;
}

//Method which will randomize an array of the size of the const int SIZE
void randomArray(int r[]){

for(int rep = 0; rep < SIZE; rep++){

r[rep] = int (rand()%100);
}
}

//Quicksort method
void quicksort(int r[], int leftSide, int rightSide){

int leftTemp = leftSide;
int rightTemp = rightSide;
int pivot = r[(leftSide+rightSide)/2];

while(leftSidepivot)
rightTemp--;

if(leftTemp<=rightTemp){
switchValues(r, leftTemp, rightTemp);
leftTemp++;
rightTemp--;

}
else{
if(leftSide<rightTemp)
quicksort(r, leftSide, rightTemp);
if(leftTemp<rightSide)
quicksort(r,leftTemp,rightSide);
return;
}
}
}

//Main method for testing the quicksort
int main() {

cout << "Generating random array!" << endl;
randomArray(r);

cout << "The unsorted array: ";
printArray(r);

cout << endl << endl;
cout << "Sorting in progress..." << endl;
const clock_t beginTime = clock();
quicksort(r, 0, SIZE);
float totalTime = ( clock () - beginTime ) /  CLOCKS_PER_SEC;

cout << "The sorted array: ";
printArray(r);
cout << endl;

cout << "The sort took " << totalTime << " milliseconds!" << endl;

return 0;
}
```