![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Mayk |
|
|||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 45 Всего: 134 |
То что пишется за две минуты иногда отлаживается за пол часа и даже более. Гораздо более серьезной проблемой qsort а является то, что он вызывает ф-цию каждый раз для сравнения [std::sort может заinlineить компаратор, а вот qsort очень навряд ли]. Однако в любом случае - не стоит что-либо оптимизировать и переписывать, пока profiler показывает что в этом нет особой нужды. Это сообщение отредактировал(а) Mayk - 5.9.2006, 18:00 -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
|||
|
||||
| Greeen |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 710 Регистрация: 13.8.2006 Где: Петербург Репутация: 7 Всего: 18 |
-------------------- Подпись больше не нужна |
|||
|
||||
| Mayk |
|
|||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 45 Всего: 134 |
Вообще это англ Comparator. "Сравниватель". В частности
-------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
|||
|
||||
| ReGeDiT |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 73 Регистрация: 4.7.2006 Где: Пущино на Оке Репутация: нет Всего: нет |
кхм, ладно, с сортировкой покончили... вот ещё пару вопросов на повестке дня
"Тогда, может лучше отсортировать 2 массива, и вычёркивать из второго проверенные элементы?.. т.е. сокращать массив... я просто незнаю как это реализовать. (можете помочь то...) ТАКЖЕ! допустим имеется 1 массив, как проверить его на повторяющиеся элементы, т.е. допустим есть ли в нём одинаковые... они могут быть совершенно в разных местах? в голову ничего не лезет... (помогите тоже.....)" алгоритм мой в самом первом посте... и как всё-таки таймингом пользоватся то?? можно примерчик то Это сообщение отредактировал(а) ReGeDiT - 5.9.2006, 20:58 |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 53 Всего: 183 |
Опять отсортировать, тогда одинаковые элементы будут рядом. В STL есть алгоритм unique, который убирает дубликаты. -------------------- ... |
|||
|
||||
| ReGeDiT |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 73 Регистрация: 4.7.2006 Где: Пущино на Оке Репутация: нет Всего: нет |
Earnest, а если элементов 200? =)
Может всё-таки кто-нибудь поможет мне..........................? 1) Помогите усовершенствовать мой код выше! У меня такая идея, может лучше отсортировать 2 массива, и вычёркивать из второго проверенные элементы?.. т.е. сокращать второй массив... я просто незнаю как это реализовать. 2) Имеется 1 массив, как проверить его на повторяющиеся элементы, т.е. допустим есть ли в нём одинаковые... они могут быть совершенно в разных местах, и их может быть много? 3) Как пользоватся таймингом? можно примерчик то -.- |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 53 Всего: 183 |
А что 200 - это по-твоему много? Много - это 200 000. А на 200 почти нет разницы - что линейный поиск, что бинарный.
Что именно тебе не понятно? В отсортированном массиве одинаковые элементы стоят рядом: бери и проверяй, за один проход. Если речь идет о сравнении 2 отсортированных массивов, то там тоже просто: инкрементируй индекс первого, пока его элементы меньше второго. И наоборот. Если элементы совпадают, инкрементируй оба индекса. По-моему, кто-то такой код тебе уже писал. Что значит "не знаю как реализовать"? Пока не попробуешь, не узнаешь. -------------------- ... |
|||
|
||||
| zkv |
|
|||
![]() ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2133 Регистрация: 23.7.2006 Где: Санкт-Петербург Репутация: 26 Всего: 92 |
||||
|
||||
| ReGeDiT |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 73 Регистрация: 4.7.2006 Где: Пущино на Оке Репутация: нет Всего: нет |
я имею в виду то что, вдруг будут 200 одинаковых рядом. Массив состоит примерно из 50 000 элементов ;). откуда я знаю сколько раз проверять массив?
|
|||
|
||||
| Rockie |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1143 Регистрация: 23.4.2006 Репутация: 8 Всего: 31 |
ReGeDiT, если я правильно понял вопрос - уничтожаешь следующее число до тех пор, пока не конец массива, либо пока следующее число не станет отлично от данного. это только как один из многих вариантов
-------------------- Чтобы иметь большой гардероб - надо иметь большой гардероб. |
|||
|
||||
| Voldemar2004 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1650 Регистрация: 25.12.2004 Репутация: нет Всего: 23 |
На работе была такая же задача: нужно было выбрать из БД все номера ИНН и номера, которые попали на выделение, затем сравнить и получить список тех людей, которые не попали. Вкратце так:
-------------------- i_i (';') (V) ![]() |
|||
|
||||
| Voldemar2004 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1650 Регистрация: 25.12.2004 Репутация: нет Всего: 23 |
-------------------- i_i (';') (V) ![]() |
|||
|
||||
| ReGeDiT |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 73 Регистрация: 4.7.2006 Где: Пущино на Оке Репутация: нет Всего: нет |
спасибо!
осталось 2 вопроса --- посмотрел второй код получше... а там ведь сравнивается просто на 2 одинаковых максимум... а если их больше? сделать цикл по длине массива а внутрь его запихнуть это? тока мне кажется будет бред Это сообщение отредактировал(а) ReGeDiT - 9.9.2006, 15:44 |
|||
|
||||
| Voldemar2004 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1650 Регистрация: 25.12.2004 Репутация: нет Всего: 23 |
Каких? -------------------- i_i (';') (V) ![]() |
|||
|
||||
| Voldemar2004 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1650 Регистрация: 25.12.2004 Репутация: нет Всего: 23 |
Нет.
{1, 99, 9, 3, 0, 34, 654, 34, -345, 3456, 34, -1000, 321, 13244, 0, 654, -100, 1000, -1000, 9}; 34 - встречается 3 раза, выводим - два раза 34 - они "лишние". Хотя, можно еще так: если число встречается > 2 раз, то выводим его столько раз сколько оно встречается в массиве:
-------------------- i_i (';') (V) ![]() |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |