selection sorting

17
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] -----

Upload: nichole-whitehead

Post on 30-Dec-2015

14 views

Category:

Documents


0 download

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 Presentation

TRANSCRIPT

Page 1: Selection Sorting

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]

-----

Page 2: Selection Sorting

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]

-----

Page 3: Selection Sorting

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]

-----

Page 4: Selection Sorting

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; }

-----

Page 5: Selection Sorting

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; }

-----

Page 6: Selection Sorting

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; }

-----

Page 7: Selection Sorting

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));

} -----

Page 8: Selection Sorting

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; }

-----

Page 9: Selection Sorting

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;

}

-----

Page 10: Selection Sorting

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;}

-----

Page 11: Selection Sorting

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;)

-----

Page 12: Selection Sorting

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;)

-----

Page 13: Selection Sorting

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));}

-----

Page 14: Selection Sorting

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;)

-----

Page 15: Selection Sorting

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);)

-----

Page 16: Selection Sorting

Other Sorting Algorithms

• Bubble Sorting

• Insertion Sorting

• Merge Sorting

• Heap Sorting

• Quick Sorting

• Others

Page 17: Selection Sorting

Quiz 9 – Part III

• 2 points• Do it in HiC• Submit to HiC server as Quiz93• Due Monday, by 5 PM

-----