#include "sort_library.h" #include #include using namespace std; class tracking_number { public: int val; tracking_number(){ cout << "Default Constructor Called\n"; } tracking_number(const tracking_number& tn){ val = tn.val; cout << "Copy Constructor Called\n"; } tracking_number& operator=(const tracking_number& tn){ cout << "Assignment operator used\n"; val = tn.val; return *this; } tracking_number& operator=(int newval){ val = newval; return *this; } bool operator>(const tracking_number& otn){ return val > otn.val; } ~tracking_number(){ cout << "Destructor Called\n"; } }; int main(){ /* tracking_number tns[10]; tns[0] = 4; tns[1] = 1; tns[2] = 100; tns[3] = 6; tns[4] = 7; tns[5] = 89; tns[6] = 9; tns[7] = 53; tns[8] = 31; tns[9] = 13; cout << " -------- About to do the actual sort\n"; selection_sort(tns, 10); cout << " -------- Done Sorting\n"; for(const tracking_number& i : tns) cout << i.val << endl; return 0; */ // int numbers[] = {5, 4, 6, 2, 8, 2, 3, 1}; int numbers[] = {5, 5, 5, 5, 5, 5, 5, 5, 5}; int length = sizeof(numbers) / sizeof(numbers[0]); quicksort(numbers, length); for(auto n: numbers) cout << n << " "; cout << endl; string animals[] = {"elk", "moose", "deer", "sheep", "goat", "horse", "alligator"}; quicksort(animals, 7); for(auto a : animals) cout << a << " "; cout << endl; /* Big test */ size_t test_length = 160000; int *more_numbers = new int[test_length]; for(size_t i = 0; i < test_length; i++) more_numbers[i] = rand(); auto start_time = std::chrono::system_clock::now(); quicksort(more_numbers, test_length); auto end_time = std::chrono::system_clock::now(); double time_taken = std::chrono::duration_cast(end_time - start_time).count(); cout << "Quicksort took " << time_taken/1000.0 << " seconds\n"; // Check to see if more_numbers is sorted correctly for(size_t i = 0; i < test_length - 1; i++) if(more_numbers[i] > more_numbers[i+1]) { printf("Sorting Error: %d and %d are out of order\n", more_numbers[i], more_numbers[i+1]); } delete [] more_numbers; return 0; }