/******************************************************************************************** select.cpp Jim Millard for CO311 Selection Sort ********************************************************************************************/ #include <iostream> #include <string> #include "sorttool.h" using namespace std; void SelectSort(int [], const int maxsize, const int used); int IndexOfSmallest(int [], const int maxsize, const int begin, const int end); void main() { const int MaxSize = 1000; int Array[MaxSize]; int toSort; cout << "How many numbers to sort (up to " << MaxSize << "): "; cin >> toSort; FillWithRand(Array, MaxSize, toSort); //setup the array with X numbers cout << "Unsorted:" << endl; ParseAndPrint(Array, MaxSize, toSort); //show the unsorted array SelectSort(Array, MaxSize, toSort); //sort the first X elements of the array cout << "Sorted:" << endl; ParseAndPrint(Array, MaxSize, toSort); //show the (hopefully) sorted array } void SelectSort(int Array[], const int maxsize, const int count) { for (int current = 0; (current < count) && (current < maxsize); current++) { int target = IndexOfSmallest(Array, maxsize, current, count); if (target > current) Swap(Array[target], Array[current]); } return; } int IndexOfSmallest(int Array[], const int maxsize, const int begin, const int end) { int smallest = Array[begin]; int position = begin; for (int i = begin+1; (i < end) && (i < maxsize); i++) if (Array[i] < smallest) { smallest = Array[i]; position = i; } return position; }