Я написал такую структуру
struct country {
string country_name;
int population;
int gdp;
...
};
country c;
Я хочу написать функцию, которая сортирует страны в алфавитном порядке, вот что я написал:
void mergesort(string c.country_name left, string c.country_name right)
if(left < right)
center = (left+right)/2;
mergesort(left, center)
mergesort(center+1, right)
mergesort(left, center, right)
Я знаю, что с параметрами функции что-то не так, но если c.country_name left и c.country_name right неверны, как я могу сообщить компьютеру, что c.country_name left — это первое имя, а c.country_name right — последний?
Прежде чем кто-то спросит, да, это домашняя работа, и да, я все еще изучаю основы, поэтому, пожалуйста, не будьте грубыми. Благодарю.
Написание сортировки слиянием трудно для начинающих. Вы уверены, что должны реализовать сортировку самостоятельно? Вы не можете использовать предопределенный std::sort()
? Если можете, используйте это так:
#include <algorithm>
#include <string>
using namespace std;
struct country {
string country_name;
int population;
int gdp;
//You need this line in your struct to express that you want to sort countries on country_name, not population or gdp
bool operator<(const country& r) const { return country_name < r.country_name; }
};
//You should test your structs and methods in a main method
int main() {
const int SIZE = 3;
country countryArray[SIZE];
countryArray[0].country_name = "Brazil";
countryArray[1].country_name = "Argentina";
countryArray[2].country_name = "Chile";
//This is the predefined std::sort(), it knows to sort on country_name because we overloaded the '<' operator in the struct
sort(countryArray, countryArray + SIZE);
//We just print all the country names to see if we got the homework right or not
for (int i=0; i<SIZE; i++){
cout<<countryArray[i].country_name<<endl;
}
//You might want to have this line in the end of the code to prevent the command line window from exiting
getchar();
return 0;
}
Вот несколько простых упражнений для вас, которые я рекомендую делать, чтобы понять больше и стать лучше:
Других решений пока нет …