I have been asked to create a function based on selection sort to find the kth smallest element in an arbitrary array of integers.
I used the standard selection sort which sorts the array and then uses input to output what integer they are requesting to find.
It works correctly, I just feel as though it is a very "lame" inefficient program. I know there is a way to cut a few corners and find the answer prior to the sort, but i cannot figure it out.
I was also asked to state why selection sort is a better method then insertion sort for this task?
Here is my code:
I used the standard selection sort which sorts the array and then uses input to output what integer they are requesting to find.
It works correctly, I just feel as though it is a very "lame" inefficient program. I know there is a way to cut a few corners and find the answer prior to the sort, but i cannot figure it out.
I was also asked to state why selection sort is a better method then insertion sort for this task?
Here is my code:
int main()
{
const int nSize = 5;
int A[nSize] = { 30, 5, 200, 151, 40 };
for (int nStartIndex = 0; nStartIndex < nSize; nStartIndex++)
{
int nSmallestIndex = nStartIndex;
for (int nCurrentIndex = nStartIndex + 1; nCurrentIndex < nSize; nCurrentIndex++)
{
if (A[nCurrentIndex] < A[nSmallestIndex])
nSmallestIndex = nCurrentIndex;
}
swap(A[nStartIndex], A[nSmallestIndex]);
}
int j;
cout<<"Enter the kth smallest number you want:"<<endl;
cin>>j;
cout<<endl<<A[j-1]<<" is the "<<j<<" smallest element ";
}