Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

Сортировка массива на С++.

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование
Предыдущая тема :: Следующая тема  
Автор Сообщение
Константин



Зарегистрирован: 06.11.2002
Сообщения: 230

СообщениеДобавлено: Пн Мар 28 2005 16:30    Заголовок сообщения: Сортировка массива на С++. Ответить с цитатой

Господа, если ли в с++ функция для сортировки массива(по алфавиту)?Элементы массива имеют тип string.
Или самому придётся функцию писать? Embarassed
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
tinimi



Зарегистрирован: 27.03.2005
Сообщения: 90
Откуда: Win32

СообщениеДобавлено: Пн Мар 28 2005 22:52    Заголовок сообщения: Ответить с цитатой

насчет сортировки незнаю, но есть функции лексикографического сравнения строк:
strсmp и strcmpi(вне зависимости от типа регистра)
Синтаксис - передаются 2 строки, результат:
<0 1 лексикографически больше
0 - равны лексикографически
>0 1 лексикографически меньше.
лексикографически - по алфавиту.
Но перепроверь, точно не помню.
лексикографически - ето по алфавитуCool
_________________
[ 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
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...