Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Константин
Зарегистрирован: 06.11.2002 Сообщения: 230
|
Добавлено: Пн Мар 28 2005 16:30 Заголовок сообщения: Сортировка массива на С++. |
|
|
Господа, если ли в с++ функция для сортировки массива(по алфавиту)?Элементы массива имеют тип string.
Или самому придётся функцию писать? |
|
Вернуться к началу |
|
|
tinimi
Зарегистрирован: 27.03.2005 Сообщения: 90 Откуда: Win32
|
Добавлено: Пн Мар 28 2005 22:52 Заголовок сообщения: |
|
|
насчет сортировки незнаю, но есть функции лексикографического сравнения строк:
strсmp и strcmpi(вне зависимости от типа регистра)
Синтаксис - передаются 2 строки, результат:
<0 1 лексикографически больше
0 - равны лексикографически
>0 1 лексикографически меньше.
лексикографически - по алфавиту.
Но перепроверь, точно не помню.
лексикографически - ето по алфавиту _________________ [ TiNiMi ] |
|
Вернуться к началу |
|
|
Wladimir
Зарегистрирован: 02.03.2005 Сообщения: 150 Откуда: Ставропольский край
|
Добавлено: Вт Мар 29 2005 20:58 Заголовок сообщения: |
|
|
В стандартной библиотеке есть алгоритм sort.
Есть ещё масса других, но этот сам напрашивается.
Не забудь включить нужную локаль. |
|
Вернуться к началу |
|
|
grayrat
Зарегистрирован: 30.06.2003 Сообщения: 189
|
Добавлено: Ср Мар 30 2005 18:05 Заголовок сообщения: |
|
|
Вот цитата из Борланда 3.1, чуть съехала
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
▌bsearch, lfind, ▐
▌lsearch, and qsort▐ <STDLIB.H, SEARCH.H>
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
■ bsearch performs a binary search
■ lfind and lsearch perform a linear search
■ qsort sorts using the quicksort algorithm
Declaration:
■ void *bsearch(const void *key, const void *base, size_t nelem,
size_t width, int (*fcmp)(const void*, const void*));
■ void *lfind(const void *key, const void *base, size_t *num,
size_t width, int (*fcmp)(const void *, const void*));
■ void *lsearch(const void *key, void *base, size_t *num,
size_t width, int (*fcmp)(const void *, const void *));
■ void qsort(void *base, size_t nelem,
size_t width, int (*fcmp)(const void *, const void *));
Remarks:
Function│ What It Does
═════════╪══════════════════════════════════════════════════════════════
bsearch │ Makes a binary search for the value *key in a table (array)
│ of nelem elements in memory
lfind │ Makes a linear search for *key in an array of sequential
│ records
lsearch │ Makes a linear search for *key in a table. If *key is not in
│ the table, lsearch appends it (the search key) to the table.
qsort │ Is an implementation of the "median of three" variant of the
│ quicksort algorithm
Argument│ What It Is/Points To
═════════╪═══════════════════════════════════════════════════════════
base │ The base (0th element) of the search table
fcmp │ A user-defined comparison routine that compares two items
│ and returns a value based on the comparison
key │ The item to be searched for (the search key)
nelem │ The number of entries in the table
num │ The number of entries in the table
width │ The number of bytes in each entry
NOTE:
■ Because lsearch performs a linear search, the table entries do not need
to be sorted before the function call.
■ Because bsearch performs a binary search, the first matching entry is
not necessarily the first entry in the table.
Return Value:
Function│ On Failure │ On Success
═════════╪════════════════╪══════════════════════════
bsearch │ 0 (No match) │ The address of the first
lfind │ NULL (No match)│ entry in the table that
lsearch │ │ matches the search key
─────────┼────────────────┼──────────────────────────
qsort │ None │ None |
|
Вернуться к началу |
|
|
Wladimir
Зарегистрирован: 02.03.2005 Сообщения: 150 Откуда: Ставропольский край
|
Добавлено: Ср Мар 30 2005 20:49 Заголовок сообщения: |
|
|
[quote]Вот цитата (и далее)[/quote]
Это - тоже. Это - стандартные средства C, а sort - алгоритм (функция) сортировки из STL, к-я - часть стандарта C++.
У неё шире область применения и, как продекларировано, скорость выше, чем даже у qsort. |
|
Вернуться к началу |
|
|
nut888
Зарегистрирован: 05.04.2005 Сообщения: 4
|
Добавлено: Вт Апр 05 2005 19:47 Заголовок сообщения: Для сортировки используй STL |
|
|
#include <string>
#incluse <algorithm>
#include <vector>
std::vector<std::string> data;
data.push_back("kshgksdfhgk");
data.push_back("lfjgfksghsdlk");
...............
std::sort(data.begin(), data.end());
Или вмето vector используй set , multiset тогда оно всегда
будет отсортировано |
|
Вернуться к началу |
|
|
Wladimir
Зарегистрирован: 02.03.2005 Сообщения: 150 Откуда: Ставропольский край
|
Добавлено: Вт Апр 05 2005 20:45 Заголовок сообщения: |
|
|
Цитата: | Или вмето vector используй set , multiset тогда оно всегда
будет отсортировано |
Только при небольших объёмах. Потому что последовательные контейнеры быстрее ассоциативных и эффективнее в плане работы с памятью. На большой выборке это может создать хорошие тормоза. |
|
Вернуться к началу |
|
|
harmony
Зарегистрирован: 30.04.2005 Сообщения: 3
|
Добавлено: Пн Май 02 2005 06:36 Заголовок сообщения: |
|
|
Поставьте чемоданы на пол, у кого не стоит, зажмите между ног. http://www.nemarov.com |
|
Вернуться к началу |
|
|
|