|
|
|
|
|
для: in_mysql
(23.01.2007 в 22:26)
| | Это популярный алгоритм сортировки в лексикографическом порядке.
Можно сортировать "пузырьком":
есто эн строк, тогда проходишься по массиву эн квадрат раз и сравниваешь 2 соседние строки: энную и эн плюс первую таким образом:
идешь по строкам одновременно и сравниваешь номера символов на этих местах:
если первый больше второго, то меняем строки местами и сравниваем дальше следующие 2 строки, если меньше то ничего не меняем просто дальше идем, а если равны то сравниваем следующие 2 символа. | |
|
|
|
|
|
|
|
для: in_mysql
(23.01.2007 в 22:26)
| | используй функцию strcmp( str1, str2) | |
|
|
|
|
|
|
|
для: in_mysql
(23.01.2007 в 22:26)
| | А можно действительно использовать алгоритм sort()
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;
int main()
{
typedef vector<string> StringVector;
StringVector coll;
try
{
char input[80];
string str;
while(true)
{
cout << "Введите строку ";
fgets(input, 80, stdin);
// Если введена пустая строка - выходим из цикла
if(strlen(input) <= 1) break;
// Удаляем завершающий перевод строки
input[strlen(input) - 1] = '\0';
// Присваиваем строке str значение input
str = input;
coll.push_back(str);
}
// Сортируем коллекцию
sort(coll.begin(), coll.end());
StringVector::const_iterator pos;
for(pos = coll.begin(); pos != coll.end(); ++pos)
{
cout << *pos << "\n";
}
}
catch(bad_alloc)
{
cout << "Не удалось выделить память под коллекцию\n";
}
return 0;
} |
| |
|
|
|
|
|
|
|
для: in_mysql
(23.01.2007 в 22:26)
| | Можно использовать какой-нибудь ассоциативный контейнер, например, мультимножество, которое автоматически сортирует свои элементы
#include <iostream>
#include <set>
#include <string>
using namespace std;
int main()
{
// Отображение
typedef multiset<string> StringMultiset;
StringMultiset coll;
try
{
char input[80];
string str;
while(true)
{
cout << "Введите строку ";
fgets(input, 80, stdin);
// Если введена пустая строка - выходим из цикла
if(strlen(input) <= 1) break;
// Удаляем завершающий перевод строки
input[strlen(input) - 1] = '\0';
// Присваиваем строке str значение input
str = input;
coll.insert(str);
}
StringMultiset::const_iterator pos;
for(pos = coll.begin(); pos != coll.end(); ++pos)
{
cout << *pos << "\n";
}
}
catch(bad_alloc)
{
cout << "Не удалось выделить память под коллекцию\n";
}
return 0;
} |
| |
|
|
|
|
автор: in_mysql (24.01.2007 в 00:41) |
|
|
для: SuperSonic
(24.01.2007 в 00:36)
| | скупо... а поподробнее? | |
|
|
|
|
автор: SuperSonic (24.01.2007 в 00:36) |
|
|
для: in_mysql
(23.01.2007 в 22:26)
| | sort | |
|
|
|
|
автор: in_mysql (23.01.2007 в 22:26) |
|
| Пусть имеется массив строк - например, содержимое файла - нужно отсортировать его по алфавиту - вопрос как? | |
|
|
|
|