how to add a selection sort to this code?

chetoos's Avatar, Join Date: Nov 2008
Newbie Member
i want to add a selection sort to this code by the id_number and i have the selection code but i cant implement it to my code



Code:
#include <iostream>
#include <string>

using namespace std;

struct database {
  int id_number, age;
  float salary;
  string name;
};
void input_data(struct database*data_ptr)
{
  int i_tmp;
  float f_tmp;
  string s_tmp;
  cout<<"enter name:";
  cin >>s_tmp;data_ptr->name = s_tmp;
  cout << "enter id_number :";
  cin >> i_tmp;data_ptr->id_number = i_tmp;
  cout << "enter age :";
  cin >> i_tmp;data_ptr->age = i_tmp;
  cout << "enter salary:";
  cin >> f_tmp;data_ptr->salary = f_tmp;;
  cout<<endl;
}
void output_data(struct database*data_ptr)
{
  cout << "*********************************\n";
  cout << "name = " << data_ptr->name << "\n";
  cout << "id_num = " << data_ptr->id_number << "\n";
  cout << "age = " << data_ptr->age << "\n";
  cout << "salary = " << data_ptr->salary << "\n";
  cout << "*********************************\n";
}

int main()
{
   database*employee ;
   int n;
   cout<<"how many employees do you want to enter?";
   cin >> n ;
   employee = new database[n] ;
   for ( int i = 0 ; i  < n ; i++)
       input_data(employee+i);
   for ( int a = 0 ; a  < n ; a++)
       output_data(employee+a);
   return 0;
}



THE SELECTION SORT CODE IS:
Code:
void selectionSort(int[] list, int listLength)
 {int index;
int smallestIndex;
int minIndex;
int temp;
for (index = 0; index < listLength –1; index++) {smallestIndex = index;
for (minIndex = index + 1; minIndex < listLength; minIndex++)
if (list[minIndex] < list[smallestIndex])smallestIndex = minIndex;
temp = list[smallestIndex];
list[smallestIndex] = list[index];
list[index] = temp;
}
}
xpi0t0s's Avatar, Join Date: Aug 2004
Mentor
The selection sort (looks more like bubble sort to me, but then I don't know what a "selection sort" is) sorts a list of integers. So you need to adapt it to take an array of employee rather than an array of int. So the first line will probably end up being something like
Code:
void selectionSort(employee[] list, int listLength)
So then you need to adapt the code to use list[x].id_number instead of just list[x], assuming of course you want to sort by id_number.
Then you'll need to add a call to selectionSort() somewhere in main().
xpi0t0s's Avatar, Join Date: Aug 2004
Mentor
Sorry, I'm thinking in C++ (of employee being a class rather than a struct). Try instead:
Code:
void selectionSort(struct employee *list, int listLength)