![]() |
Модераторы: korob2001, ginnie |
![]() ![]() ![]() |
|
Gekt0r |
|
|||
Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 10.4.2008 Репутация: нет Всего: нет |
Задача следующая.
Есть двумерный массив, очень большой, на несколько тысяч строк Надо его отсортировать по заданному столбцу О_о вопрос, как это можно сделать, чтобы было не слишком долго? Есть идея сделать столбцы строками, и сортировать каждую строку по очереди. Только вот как, у меня знаний не хватает.. Подскажите, плз) |
|||
|
||||
Gekt0r |
|
|||
Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 10.4.2008 Репутация: нет Всего: нет |
так, пока можно не отвечать... Что затупил под вечер, сейчас процесс пошел)
|
|||
|
||||
sir_nuf_nuf |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 920 Регистрация: 6.1.2008 Репутация: 14 Всего: 31 |
это маааахонький массивчик |
|||
|
||||
kavkaz |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 70 Регистрация: 26.12.2007 Репутация: 1 Всего: 2 |
Если я вас правильно понял, то вам нужно преобразование Шварца.
Пример:
Нужно прокомментировать? |
|||
|
||||
klem4 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 100 Регистрация: 27.7.2008 Репутация: 2 Всего: 2 |
А зачем вообще мап ?
Добавлено через 59 секунд хотя на самом деле TIMTOWTDI |
|||
|
||||
wanick |
|
|||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 25.2.2010 Репутация: нет Всего: нет |
ну или так
и не забывай что <=> числовое сравнение а cmp, выполняет алфавитную сортировку в ASCII-порядке |
|||
|
||||
amg |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1145 Регистрация: 3.8.2006 Где: Новосибирск Репутация: 38 Всего: 50 |
Преобразование Шварца здесь в самом деле ни к чему. Это преобразование применяется, когда для получения величины, по которой будет сортировка, нужны времязатратные вычисления. Типичный пример, который обычно приводят - сортировка файлов по времени.
@sorted_files = sort { -M $a <=> -M $b } @files; При обычной сортировке массива из 1000 файлов медленная операция -M (медленная потому что обращается к диску) будет исполняться около 13000 раз (2*N*ln N). @sorted_files = map {$_->[0]} sort { $a->[1] <=> $b->[1] } map { [ $_, -M $_ ] } @files; С преобразованием Шварца -M будет исполняться только 1000 раз (N). |
|||
|
||||
gcc |
|
|||
![]() Агент алкомафии ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2691 Регистрация: 25.4.2008 Где: %&й Репутация: 1 Всего: 17 |
а интересно квантовый алгоритм будет ли быстрее работать?
Это сообщение отредактировал(а) gcc - 25.2.2010, 21:55 |
|||
|
||||
sir_nuf_nuf |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 920 Регистрация: 6.1.2008 Репутация: 14 Всего: 31 |
не, не будет. У вас же обычный, а не квантовый компьютер, поэтому намного эффективней чем QuickSort вы не получите. Вообще сортировать двумерный массив по N ому столбцу нужно так:
klem4, Заметьте, что массив @bigarray - это массив ссылок (ARRAYREFов), поэтому при его сортировке никаких тяжелых операций копирования не происходит. Просто переставляются ссылки (обычные скаляры). |
|||
|
||||
gcc |
|
|||
![]() Агент алкомафии ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2691 Регистрация: 25.4.2008 Где: %&й Репутация: 1 Всего: 17 |
sir_nuf_nuf, понтяно, тут вот написано что квантовый алгоритм Гровера быстрее чем любая РСУБД
Алгоритм Гровера Это сообщение отредактировал(а) gcc - 28.2.2010, 15:58 |
|||
|
||||
mvsgt |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 209 Регистрация: 27.3.2009 Репутация: 1 Всего: 1 |
||||
|
||||
gcc |
|
||||
![]() Агент алкомафии ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2691 Регистрация: 25.4.2008 Где: %&й Репутация: 1 Всего: 17 |
кстате, это все таки интересная штука Quantum::Superpositions;
получается поиск по массиву быстрее чем map foreach grep exists (хеш) void у любом случае... этов mod_perl: (в CGI будет другие цифры, наверное)
Добавлено @ 06:44 mvsgt, ну там по ссылке вроде бы написано что нету других алгоритмов... А по другой ссылке написано, что будет быстрее чем база данных http://www.opennet.ru/docs/RUS/perl_obzor/...s/quantium.html Это сообщение отредактировал(а) gcc - 2.4.2010, 07:27 |
||||
|
|||||
![]() ![]() ![]() |
Правила форума "Perl" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |