#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using std::cout;
using std::cin;
using std::endl;
using std::string;
using std::swap;
struct studentStruct {
string firstName;
//string lastName;
//int grade;
//float GPA;
};
enum sortField {eFirstName, eLastName, eGrade, eGPA};
enum sortDirection {eAscending, eDescending};
bool compData( studentStruct s1, studentStruct s2, sortField field, sortDirection direction)
{
switch(field)
{
case eFirstName:
{
string f1 = s1.firstName;
string f2 = s2.firstName;
switch(direction)
{
case eAscending:
{
if(f2 < f1)
return true;
else
return false;
}
case eDescending:
{
if(f2 > f1)
return true;
else
return false;
}
}
}
}
}
void sort( studentStruct s[], enum sortField field, int length, sortDirection d)
{
for(int i = 0; i < length - 1; i++)
{
for(int j = 0; j < length - 1 - i; j++)
{
if(compData(s[j], s[j+1], field, d) == true)
{
swap(s[j], s[j+1]);
cout << "SWAP" << endl;
}
}
}
}
int main()
{
struct studentStruct s[5] = {{"M"}, {"I"}, {"K"}, {"O"}, {"N"}};
sort(s, eFirstName, 5, eAscending);
for(int i = 0; i < 5; i++)
cout << s[i].firstName << endl;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8YWxnb3JpdGhtPgoKdXNpbmcgc3RkOjpjb3V0Owp1c2luZyBzdGQ6OmNpbjsKdXNpbmcgc3RkOjplbmRsOwp1c2luZyBzdGQ6OnN0cmluZzsKdXNpbmcgc3RkOjpzd2FwOwoKc3RydWN0IHN0dWRlbnRTdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICBzdHJpbmcgZmlyc3ROYW1lOwogIC8vc3RyaW5nIGxhc3ROYW1lOwogIC8vaW50IGdyYWRlOwogIC8vZmxvYXQgR1BBOwp9OwoKZW51bSBzb3J0RmllbGQge2VGaXJzdE5hbWUsIGVMYXN0TmFtZSwgZUdyYWRlLCBlR1BBfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKZW51bSBzb3J0RGlyZWN0aW9uIHtlQXNjZW5kaW5nLCBlRGVzY2VuZGluZ307Cgpib29sIGNvbXBEYXRhKCBzdHVkZW50U3RydWN0IHMxLCBzdHVkZW50U3RydWN0IHMyLCAgc29ydEZpZWxkIGZpZWxkLCBzb3J0RGlyZWN0aW9uIGRpcmVjdGlvbikKewogIHN3aXRjaChmaWVsZCkKICAgIHsKICAgIGNhc2UgZUZpcnN0TmFtZToKICAgICAgewogICAgICAgIHN0cmluZyBmMSA9IHMxLmZpcnN0TmFtZTsKICAgICAgICBzdHJpbmcgZjIgPSBzMi5maXJzdE5hbWU7CgkJc3dpdGNoKGRpcmVjdGlvbikKCQl7CgkJCWNhc2UgZUFzY2VuZGluZzoKCQkJewoJCQkJaWYoZjIgPCBmMSkKCQkJCQlyZXR1cm4gdHJ1ZTsKCQkJCWVsc2UJCgkJCQkJcmV0dXJuIGZhbHNlOwoJCQl9CgkJCWNhc2UgZURlc2NlbmRpbmc6CgkJCXsKCQkJCWlmKGYyID4gZjEpCgkJCQkJcmV0dXJuIHRydWU7CgkJCQllbHNlCQoJCQkJCXJldHVybiBmYWxzZTsKCQkJfQoJCX0KICAgICAgfQogICAgfQp9Cgp2b2lkIHNvcnQoIHN0dWRlbnRTdHJ1Y3Qgc1tdLCBlbnVtIHNvcnRGaWVsZCBmaWVsZCwgaW50IGxlbmd0aCwgc29ydERpcmVjdGlvbiBkKQp7CiAgZm9yKGludCBpID0gMDsgaSA8IGxlbmd0aCAtIDE7IGkrKykKICAgIHsKICAgICAgZm9yKGludCBqID0gMDsgaiA8IGxlbmd0aCAtIDEgLSBpOyBqKyspCiAgICAgICAgewogICAgICAgICAgaWYoY29tcERhdGEoc1tqXSwgc1tqKzFdLCBmaWVsZCwgZCkgPT0gdHJ1ZSkKICAgICAgICAgICAgewogICAgICAgICAgICAgIHN3YXAoc1tqXSwgc1tqKzFdKTsKICAgICAgICAgICAgICBjb3V0IDw8ICJTV0FQIiA8PCBlbmRsOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQp9CgoKaW50IG1haW4oKQp7CglzdHJ1Y3Qgc3R1ZGVudFN0cnVjdCBzWzVdID0ge3siTSJ9LCB7IkkifSwgeyJLIn0sIHsiTyJ9LCB7Ik4ifX07Cgkgc29ydChzLCBlRmlyc3ROYW1lLCA1LCBlQXNjZW5kaW5nKTsKCSBmb3IoaW50IGkgPSAwOyBpIDwgNTsgaSsrKQoJCSBjb3V0IDw8IHNbaV0uZmlyc3ROYW1lIDw8IGVuZGw7Cn0=