selection sorting
DESCRIPTION
Selection Sorting. Pseudocode (Forward) for i = 0 to size - 2 find the index of the required element between s[i] and s[size - 1] If i not the same as index swap s[i] and s[index] -----. Selection Sorting. Pseudocode (Backward) for i = size – 1 to 1 - PowerPoint PPT PresentationTRANSCRIPT
Selection Sorting
Pseudocode (Forward)
for i = 0 to size - 2
find the index of the required element
between s[i] and s[size - 1]
If i not the same as index
swap s[i] and s[index]
-----
Selection Sorting
Pseudocode (Backward)
for i = size – 1 to 1
find the index of the required element
between s[0] and s[i]
If i not the same as index
swap s[i] and s[index]
-----
Sorting Array of Structs
Sort Student by GPA (Descending) and ID (Ascending)
StudentType s[MAX_SIZE];
int size;
for i = 0 to size - 2
find the index of the required student
between s[i] and s[size - 1]
If i not the same as index
swap s[i] and s[index]
-----
Function IndexOfTheStudent// The function finds and returns the index of the// student who has the highest GPA between s[first] and s[last];// if two or more students have the same highest GPA, return// the index of student with the smallest ID. // Parameters: (In, In, In) int IndexOfTheStudent(const StudentType s[], int first, int last) { int index = first; for (int i = first + 1; i <= last; i++) { // How to compare two students on GPA and ID if ( ) index = i; }
return index; }
-----
Function CompGPA_ID
// The function compares two students:// It returns true if s1 has higher GPA, or // s1 has the same GPA as s2 but has a smaller ID // It returns false otherwise.// Parameters: ( In, In) bool CompGPA_ID(const StudentType& s1, const StudentType& s2) { if (s1.gpa > s2.gpa) return true; else if (s1.gpa == s2.gpa && s1.id < s2.id) return true; else return false; }
-----
Function CompGPA_ID// The function compares two students:// It returns true if s1 has higher GPA, or // s1 has the same GPA as s2 but has a smaller ID // It returns false otherwise.// Parameters: ( In, In) bool CompGPA_ID(const StudentType& s1, const StudentType& s2) { if (s1.gpa > s2.gpa || (s1.gpa == s2.gpa && s1.id < s2.id)) return true; else return false; }
-----
Function CompGPA_ID
// The function compares two students:// It returns true if s1 has higher GPA, or // s1 has the same GPA as s2 but has a smaller ID // It returns false otherwise.// Parameters: ( In, In) bool CompGPA_ID(const StudentType& s1, const StudentType& s2) { return ((s1.gpa > s2.gpa) || (s1.gpa == s2.gpa && s1.id < s2.id));
} -----
Function IndexOfTheStudent// The function finds and returns the index of the// student who has the highest GPA between s[first] and s[last];// if two or more students have the same highest GPA, return// the index of student with the smallest ID. // Parameters: ( In, In, In) int IndexOfTheStudent(const StudentType s[], int first, int last) { int index = first; for (int i = first + 1; i <= last; i++) { // How to compare two students on GPA and ID if (CompGPA_ID(s[i], s[index])) index = i; }
return index; }
-----
Sorting Students on Two Fields
// The function uses Selection Sorting method
// to sort an array of struct StudentType on GPA in
// ascending order and then on ID in descending order.
// Parameters: ( InOut , In )
void SortStudentArray(StudentType s[], int size)
{
int index;
for (int i = 0; i < size - 1; i++)
{
index = IndexOfTheStudent(s, i, size - 1);
if (index != i)
SwapInt(s[i], s[index]);
}
return;
}
-----
Struct SectionType{ int numStudents; StudentType students[30];};
int main(){ SectionType CS143;
GetSection(CS143);
cout << "The students before sorting: "; DisplaySection(CS143);
SortStudentArray(CS143.students, CS143.numStudents);
cout << "The students after sorting: "; DisplaySection(CS143);
return 0;}
-----
Function Younger// The function compares two students:// It returns true if s1 younger than s2 // It returns false otherwise.// Parameters: ( In, In) bool Younger(const StudentType& s1, const StudentType& s2) { if ((s1.DOB.year > s2.DOB.year) || (s1.DOB.year == s2.DOB.year && s1.DOB.month > s2.DOB.month) || (s1.DOB.year == s2.DOB.year && s1.DOB.month == s2.DOB.month && s1.DOB.day > s2.DOB.day)) return true; else return false;)
-----
Function After// The function compares two dates:// It returns true if date1 after date2 // It returns false otherwise.// Parameters: ( In, In) bool After(const TDate& date1, const TDate& date2) { if ((date1.year > date2.year) || (date1.year == date2.year && date1.month > date2.month) || (date1.year == date2.year && date1.month == date2.month && date1.day > date2.day)) return true; else return false;)
-----
Function After
// The function compares two dates:// It returns true if date1 after date2 // It returns false otherwise.// Parameters: ( In, In) bool After(const TDate& date1, const TDate& date2) { return ((date1.year > date2.year) || (date1.year == date2.year && date1.month > date2.month) || (date1.year == date2.year && date1.month == date2.month && date1.day > date2.day));}
-----
Function Younger
bool After(const TDate& date1, const TDate& date2);
// The function compares two students:// It returns true if s1 younger than s2 // It returns false otherwise.// Parameters: ( In, In) bool Younger(const StudentType& s1, const StudentType& s2) { if (After(s1.DOB, s2.DOB)) return true; else return false;)
-----
Function Younger
bool After(const TDate& date1, const TDate& date2);
// The function compares two students:// It returns true if s1 younger than s2 // It returns false otherwise.// Parameters: ( In, In) bool Younger(const StudentType& s1, const StudentType& s2) { return After(s1.DOB, s2.DOB);)
-----
Other Sorting Algorithms
• Bubble Sorting
• Insertion Sorting
• Merge Sorting
• Heap Sorting
• Quick Sorting
• Others
Quiz 9 – Part III
• 2 points• Do it in HiC• Submit to HiC server as Quiz93• Due Monday, by 5 PM
-----