Re: Сортировка в файле
От: Socrat Россия  
Дата: 09.09.09 08:39
Оценка: +2
Здравствуйте, vdttf, Вы писали:


V>Есть файл большого размера (нельзя загрузить в оперативную память). Его нужно отсортировать побайтно. Причем число операций чтения допускается порядка O(NlogN), а число записей порядка O(N).

V>Как правило предлагается qsort, но ему необходимо O(NlogN) чтений и записей.
V>Были бы интересны любые идеи.

Побайтно — это как? Отсортировать по одному байту? Тогда сортировка подсчетом.
Re[3]: Сортировка в файле
От: SergH Россия  
Дата: 09.09.09 09:09
Оценка: +1
Здравствуйте, Erop, Вы писали:

E>А как догнать число чтений до O(N lnN)? Похоже всё-таки. что задачка какая-то другая...


Перепроверять результаты чтения?

Подождём автора вопроса, может прояснит.
Делай что должно, и будь что будет
Re[3]: Сортировка в файле
От: evjiii  
Дата: 09.09.09 11:04
Оценка: +1
E>А как догнать число чтений до O(N lnN)? Похоже всё-таки. что задачка какая-то другая...
а зачем, если "число операций чтения допускается порядка O(NlogN)" ? Разве "Допускается" это не значит "не больше чем"?
Сортировка в файле
От: vdttf  
Дата: 09.09.09 08:36
Оценка:
Есть файл большого размера (нельзя загрузить в оперативную память). Его нужно отсортировать побайтно. Причем число операций чтения допускается порядка O(NlogN), а число записей порядка O(N).
Как правило предлагается qsort, но ему необходимо O(NlogN) чтений и записей.
Были бы интересны любые идеи.
сортировка файл sort
Re: Сортировка в файле
От: fk0 Россия https://fk0.name
Дата: 09.09.09 08:39
Оценка:
Здравствуйте, vdttf, Вы писали:


V>Есть файл большого размера (нельзя загрузить в оперативную память). Его нужно отсортировать побайтно. Причем число операций чтения допускается порядка O(NlogN), а число записей порядка O(N).

V>Как правило предлагается qsort, но ему необходимо O(NlogN) чтений и записей.
V>Были бы интересны любые идеи.
http://ru.wikipedia.org/wiki/%D0%9F%D0%B8%D1%80%D0%B0%D0%BC%D0%B8%D0%B4%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D1%81%D0%BE%D1%80%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B0

Классика жанра...
Re: Сортировка в файле
От: D14  
Дата: 09.09.09 08:40
Оценка:
Здравствуйте, vdttf, Вы писали:


V>Есть файл большого размера (нельзя загрузить в оперативную память). Его нужно отсортировать побайтно. Причем число операций чтения допускается порядка O(NlogN), а число записей порядка O(N).

V>Как правило предлагается qsort, но ему необходимо O(NlogN) чтений и записей.
V>Были бы интересны любые идеи.
Radix sort?
Re: Сортировка в файле
От: SergH Россия  
Дата: 09.09.09 08:41
Оценка:
Здравствуйте, vdttf, Вы писали:

V>Есть файл большого размера (нельзя загрузить в оперативную память). Его нужно отсортировать побайтно. Причем число операций чтения допускается порядка O(NlogN), а число записей порядка O(N).

V>Как правило предлагается qsort, но ему необходимо O(NlogN) чтений и записей.
V>Были бы интересны любые идеи.

Посчитать количество вхождений для каждого байта, а потом записать, начиная с 00 и до ff.
Делай что должно, и будь что будет
Re[2]: Сортировка в файле
От: fk0 Россия https://fk0.name
Дата: 09.09.09 08:42
Оценка:
Здравствуйте, fk0, Вы писали:

fk0>Здравствуйте, vdttf, Вы писали:



V>>Есть файл большого размера (нельзя загрузить в оперативную память). Его нужно отсортировать побайтно. Причем число операций чтения допускается порядка O(NlogN), а число записей порядка O(N).

V>>Как правило предлагается qsort, но ему необходимо O(NlogN) чтений и записей.
V>>Были бы интересны любые идеи.
fk0> http://ru.wikipedia.org/wiki/%D0%9F%D0%B8%D1%80%D0%B0%D0%BC%D0%B8%D0%B4%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D1%81%D0%BE%D1%80%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B0

fk0>Классика жанра...


Ах да, собственно непосредственно классика: http://ru.wikipedia.org/wiki/%D0%A1%D0%BE%D1%80%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B0_%D1%81%D0%BB%D0%B8%D1%8F%D0%BD%D0%B8%D0%B5%D0%BC

А сортировка Шелла -- хорошая замена qsort для тех мест, где мало ОЗУ.
Re[2]: Сортировка в файле
От: Erop Россия  
Дата: 09.09.09 08:50
Оценка:
Здравствуйте, SergH, Вы писали:

SH>Посчитать количество вхождений для каждого байта, а потом записать, начиная с 00 и до ff.


А как догнать число чтений до O(N lnN)? Похоже всё-таки. что задачка какая-то другая...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[3]: Сортировка в файле
От: Socrat Россия  
Дата: 09.09.09 08:53
Оценка:
Здравствуйте, Erop, Вы писали:

SH>>Посчитать количество вхождений для каждого байта, а потом записать, начиная с 00 и до ff.


E>А как догнать число чтений до O(N lnN)? Похоже всё-таки. что задачка какая-то другая...


  1. пустыми циклами
  2. сделать сортировку слиянием
Re[4]: Сортировка в файле
От: vdttf  
Дата: 09.09.09 09:03
Оценка:
Здравствуйте, Socrat, Вы писали:

S>. . .


S>

    S>
  1. пустыми циклами
    S>
  2. сделать сортировку слиянием
    S>

разве сортировка слиянием может обеспечить O(N) операций записи?
Re[5]: Сортировка в файле
От: Socrat Россия  
Дата: 09.09.09 09:06
Оценка:
Здравствуйте, vdttf, Вы писали:

V>разве сортировка слиянием может обеспечить O(N) операций записи?


Просили обеспечить O(N ln N)...
Re[6]: Сортировка в файле
От: vdttf  
Дата: 09.09.09 09:09
Оценка:
S>Просили обеспечить O(N ln N)...

O(N ln N) чтений, O(N) записей . . . в этом весь ступор, кажется проходит только радикс
Re[4]: что-то тут не так... (-)
От: Erop Россия  
Дата: 09.09.09 09:12
Оценка:
Здравствуйте, Socrat, Вы писали:

E>>А как догнать число чтений до O(N lnN)? Похоже всё-таки. что задачка какая-то другая...


S>пустыми циклами
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[4]: Сортировка в файле
От: vdttf  
Дата: 09.09.09 09:14
Оценка:
Здравствуйте, SergH, Вы писали:

SH>Перепроверять результаты чтения?


SH>Подождём автора вопроса, может прояснит.


боюсь не смогу, задача на подумать, по этим условиям проходит только radix, но у него чтений O(N). Мне кажется не имеет смысла O(NlogN) чтений при возможности O(N) записей (учитывая недостаток оперативки). Но такая вот задача )
Re[2]: Сортировка в файле
От: Кодт Россия  
Дата: 10.09.09 12:36
Оценка:
Здравствуйте, fk0, Вы писали:

fk0> http://ru.wikipedia.org/wiki/%D0%9F%D0%B8%D1%80%D0%B0%D0%BC%D0%B8%D0%B4%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D1%81%D0%BE%D1%80%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B0

fk0>Классика жанра...

На одном шаге выборку приходится делать хаотично по всей длине массива — поэтому алгоритм плохо сочетается с кэшированием и подкачкой памяти.

... << RSDN@Home 1.2.0 alpha 4 rev. 1237>>
Перекуём баги на фичи!
Re: Сортировка в файле
От: Кодт Россия  
Дата: 10.09.09 12:36
Оценка:
Здравствуйте, vdttf, Вы писали:

V>Есть файл большого размера (нельзя загрузить в оперативную память).


Внешняя сортировка

V> Его нужно отсортировать побайтно.


Если действительно нужно упорядочить отдельные байты — то сортировка подсчётом.

Если же это было сказано для красного словца... то неплохо бы уточнить, что имелось в виду.
Видимо, подразумевается, что файл состоит из элементов одинаковой длины, а отношение порядка над ними совпадает с отношением порядка над байтовыми векторами.

V> Причем число операций чтения допускается порядка O(NlogN), а число записей порядка O(N).

V>Как правило предлагается qsort, но ему необходимо O(NlogN) чтений и записей.
V>Были бы интересны любые идеи.

Алгоритмы сортировки больших объёмов возникали ещё со времён ленточных накопителей, так что можно как следует прошурудить классику.

Если элементы достаточно длинные, то может статься, что исходный файл в память не влезает, а массив индексов — влезает.
Тогда можно выполнить сортировку индексов, основываясь на сравнении указуемых элементов, — выполнив обещанные N log N операций чтения; а затем прицельно сделать N операций записи.

Ещё один интересный вопрос: а сколько места на диске? Всё-таки последовательный доступ к файлу — куда быстрее произвольного. Это я в сторону сортировки слиянием.
... << RSDN@Home 1.2.0 alpha 4 rev. 1237>>
Перекуём баги на фичи!
Re[4]: Сортировка в файле
От: Erop Россия  
Дата: 10.09.09 22:18
Оценка:
Здравствуйте, evjiii, Вы писали:

E>а зачем, если "число операций чтения допускается порядка O(NlogN)" ? Разве "Допускается" это не значит "не больше чем"?


Ну в умных и хороших задачах обычно "без запаса" указывают...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.