Expand upon selectionSortType so that you are no longer boun
Expand upon selectionSortType so that you are no longer bound to a list of 1000 elements. Thus, you\'ll be using pointers to create dynamic arrays.
template <class elemType>
void selectionSortType<elemType>::setUnsortedList (const elemType list[], int size)
{
elementsInList = size;
for (int i=0; i<size; i++) {
unsortedList[i] = list[i];
}
sortList();
}
template <class elemType>
void selectionSortType<elemType>::getUnsortedList(elemType list[], int& size) const
{
size = elementsInList;
for (int i=0; i<elementsInList; i++) {
list[i] = unsortedList[i];
}
}
template <class elemType>
void selectionSortType<elemType>::getSortedList(elemType list[], int& size) const
{
size = elementsInList;
for (int i=0; i<elementsInList; i++) {
list[i] = sortedList[i];
}
}
template <class elemType>
int selectionSortType<elemType>::getLargestElement() const
{
return sortedList[elementsInList-1];
}
template <class elemType>
int selectionSortType<elemType>::getSmallestElement() const
{
return sortedList[0];
}
template <class elemType>
float selectionSortType<elemType>::getAverage() const
{
float sum = 0;
for (int i=0; i<elementsInList; i++) {
sum += sortedList[i];
}
return sum/elementsInList;
}
template <class elemType>
void selectionSortType<elemType>::printUnsortedList(std::ostream& output) const
{
for (int i=0; i<elementsInList; i++) {
output << unsortedList[i] << \" \";
}
output << std::endl;
}
template <class elemType>
void selectionSortType<elemType>::printSortedList(std::ostream& output) const
{
for (int i=0; i<elementsInList; i++) {
output << sortedList[i] << \" \";
}
output << std::endl;
}
template <class elemType>
bool selectionSortType<elemType>::equalList(const selectionSortType& otherList) const
{
if (otherList.elementsInList != elementsInList)
return false;
for (int i=0; i<elementsInList; i++) {
if (otherList.sortedList[i] != sortedList[i])
return false;
}
return true;
}
template <class elemType>
selectionSortType<elemType>::selectionSortType(const elemType list[], int size)
{
setUnsortedList(list,size);
}
template <class elemType>
selectionSortType<elemType>::selectionSortType() //default constructor
{
elementsInList = 0;
}
template <class elemType>
void selectionSortType<elemType>::sortList()
{
for (int i=0; i<elementsInList; i++) {
sortedList[i] = unsortedList[i];
}
int currentPosition;
int smallestIndex;
elemType smallestElement;
int location;
for (currentPosition = 0; currentPosition < elementsInList - 1; currentPosition++) {
smallestIndex = currentPosition;
for (location = currentPosition + 1; location < elementsInList; location++)
if (sortedList[location] < sortedList[smallestIndex])
smallestIndex = location;
smallestElement = sortedList[smallestIndex];
sortedList[smallestIndex] = sortedList[currentPosition];
sortedList[currentPosition] = smallestElement;
}
}
Solution
template <class elemType>
void selectionSortType<elemType>::setUnsortedList (const elemType list[], int size)
{
elementsInList = size;
for (int i=0; i<size; i++) {
unsortedList[i] = list[i];
}
sortList();
}
template <class elemType>
void selectionSortType<elemType>::getUnsortedList(elemType list[], int& size) const
{
size = elementsInList;
for (int i=0; i<elementsInList; i++) {
list[i] = unsortedList[i];
}
}
template <class elemType>
void selectionSortType<elemType>::getSortedList(elemType list[], int& size) const
{
size = elementsInList;
for (int i=0; i<elementsInList; i++) {
list[i] = sortedList[i];
}
}
template <class elemType>
int selectionSortType<elemType>::getLargestElement() const
{
return sortedList[elementsInList-1];
}
template <class elemType>
int selectionSortType<elemType>::getSmallestElement() const
{
return sortedList[0];
}
template <class elemType>
float selectionSortType<elemType>::getAverage() const
{
float sum = 0;
for (int i=0; i<elementsInList; i++) {
sum += sortedList[i];
}
return sum/elementsInList;
}
template <class elemType>
void selectionSortType<elemType>::printUnsortedList(std::ostream& output) const
{
for (int i=0; i<elementsInList; i++) {
output << unsortedList[i] << \" \";
}
output << std::endl;
}
template <class elemType>
void selectionSortType<elemType>::printSortedList(std::ostream& output) const
{
for (int i=0; i<elementsInList; i++) {
output << sortedList[i] << \" \";
}
output << std::endl;
}
template <class elemType>
bool selectionSortType<elemType>::equalList(const selectionSortType& otherList) const
{
if (otherList.elementsInList != elementsInList)
return false;
for (int i=0; i<elementsInList; i++) {
if (otherList.sortedList[i] != sortedList[i])
return false;
}
return true;
}
template <class elemType>
selectionSortType<elemType>::selectionSortType(const elemType list[], int size)
{
setUnsortedList(list,size);
}
template <class elemType>
selectionSortType<elemType>::selectionSortType() //default constructor
{
elementsInList = 0;
}
template <class elemType>
void selectionSortType<elemType>::sortList()
{
for (int i=0; i<elementsInList; i++) {
sortedList[i] = unsortedList[i];
}
int currentPosition;
int smallestIndex;
elemType smallestElement;
int location;
for (currentPosition = 0; currentPosition < elementsInList - 1; currentPosition++) {
smallestIndex = currentPosition;
for (location = currentPosition + 1; location < elementsInList; location++)
if (sortedList[location] < sortedList[smallestIndex])
smallestIndex = location;
smallestElement = sortedList[smallestIndex];
sortedList[smallestIndex] = sortedList[currentPosition];
sortedList[currentPosition] = smallestElement;
}
}



