Skip to content

Instantly share code, notes, and snippets.

@melvincabatuan
Created October 28, 2019 19:53
Show Gist options
  • Save melvincabatuan/cb71ba2b9c891ed8a139bb899d979766 to your computer and use it in GitHub Desktop.
Save melvincabatuan/cb71ba2b9c891ed8a139bb899d979766 to your computer and use it in GitHub Desktop.
#include <iostream>
#include <limits>
using namespace std;
void display(int arr[], int length, int pass);
void selectionSort(int arr[], int length){
int i, j, min, minat;
for(i = 0; i < (length-1); i++)
{
cout<<"This is pass # \t"<< i << "\n";
min = arr[i]; // current minimum
minat = i; // index of minimum
for(j = i+1;j < length; j++)
{
if(min > arr[j])
{
min = arr[j]; // update minimum
minat = j; // index of minimum
}
}
// swap minimum and first element of the array
int temp = arr[i];
arr[i] = arr[minat];
arr[minat]=temp;
display(arr, length, i);
cout<<"\n\n";
}
cout<<"On Exit # \t"<< i << "\n";
display(arr, length, i);
cout<<"\n\n";
}
void display(int arr[], int length, int pass){
for (int i = 0; i < length; i++)
{
cout<<arr[i]<<" ";
if (i == pass) cout<< "| ";
}
}
int main ()
{
int count;
int arr[20] = {0};
cout<<"How many elements do you want?[2-20]\n";
cin>>count;
while(cin.fail() || count > 20 || count < 2) {
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(),'\n');
cout<<"Invalid input, re-enter number of elements [2-20]:\n";
cin>>count;
}
cout<<"You chose " << count << " elements\n";
cout<<"Enter the elements \n";
for(int i = 0; i < count; ++i)
{
cin>> arr[i];
}
cout<<"Your elements are \n";
for (int i = 0; i < count; ++i)
{
cout<<"Element #"<<i+1<<'\t'<<arr[i]<<endl;
}
cout<<"\n";
selectionSort(arr, count);
int answer;
cout<<"Do you want to continue(1 for Yes, 2 for No?)";
cin>>answer;
while(cin.fail() || !(answer == 1 || answer == 2)) {
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(),'\n');
cout<<"Invalid input, re-enter choice to continue (1 for Yes, 2 for No?)\n";
cin>>answer;
}
if(answer == 1) main();
if(answer == 2) exit(1);
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment