sorting array in a structure

i am trying sort an array that is in a structure and be able to sort along the other records associated with the array.

here is my structure

struct Employee
char Name[20];
char SSN[11];
float Hours;
float Rate;

Employee Record; // initialize the structure
sort(Record) // call the sorting function
Employee sort(Record SO) //i am using selection sort
int startscan, minindex, minivalue;
for(startscan = 0; startscan < (size-1); startscan++)
minidex = startscan;
minivalue = ??? how do I assign to the array/structure???

i want to sort by the names and when they are sorted to be able to change all other values, so that when i display the sorted arrays, i see the info in sorted order with their respective variables i.e. hours, rate, ssn...

please help
Who is Participating?
dhyaneshConnect With a Mentor Commented:

First you should declare Record as an array of Employee records i.e.

Employee Record[50]                 //i.e. if you have 50 employees

void sort(Employee *SO)         //Here you will be passing pointer to entire array of records which are of type Employee

Since you want to sort by name

strcmp() would be best function to compare two strings.

Also minivalue would be a char array and not int.

char minivalue[20]

then to store in minivalue

strcpy(minivalue,SO[startscan].Name);     //copies name at position startscan to minivalue

Also you have to be careful of

char Name[20]
char SSN[11]

The user can easily enter more characters and it will result in unexpected errors.

You will need a container (such as an array or linked list) to hold all the structures.
The container provides some sort of relationship between the structures that can
be used to impose order (offset into array, position in list, etc).  Once you have a
container in which items can be ordered, your sort routine simply needs to permute
the order (swap elements in array, etc).


In my code i stated a max of 50 employees. However if this is to be dynamic then link list would be best option

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.