Skip to content

Instantly share code, notes, and snippets.

@NathanEpstein
Created February 10, 2015 16:17
Show Gist options
  • Save NathanEpstein/f51853b0a705e644252e to your computer and use it in GitHub Desktop.
Save NathanEpstein/f51853b0a705e644252e to your computer and use it in GitHub Desktop.
quicksort algorithm in C++
#include <iostream>
#include <math.h>
#include <vector>
using namespace std;
void qsort(vector<int>& v){
if (v.size() > 1){
int pivot = floor(v.size()/2);
vector<int> left;
vector<int> right;
right.push_back(v[pivot]);
for (int i=0; i<v.size(); i++){
if(i != pivot){
if(v[i]<v[pivot]){
left.push_back(v[i]);
}
else{
right.push_back(v[i]);
}
}
}
qsort(left);
qsort(right);
//merge left and right into a single vector
vector<int> sorted;
sorted.reserve(left.size() + right.size());
sorted.insert(sorted.end(), left.begin(), left.end());
sorted.insert(sorted.end(), right.begin(), right.end());
//
v.swap(sorted);
}
}
int main(){
vector<int> v;
for(int i=0; i<20; i++){
v.push_back(round(rand()));
}
qsort(v);
for (int i=0; i<v.size();i++){
cout<<v[i]<<'\n';
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment