Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2004.09.12;
Скачать: [xml.tar.bz2];

Вниз

Алгоритм сортировки   Найти похожие ветки 

 
NikotiN ©   (2004-08-24 13:43) [0]

Мне вот интересно ваше мнение по поводу одного алгоритма сортировки.
Эффективность работы не зависит от длины массива!
звучит глупо, но вроде работает. Мы с другом довольно долго обсуждали это.
Формула проходов по массиву = 2*максимальный размер элемента(байты)
ЛЮБОЙ ДЛИНЫ массив из 1байтовых чисел сортируется за 2 прохода!
так вот его суть для однобайтовых(по размеру элемента) массивов:
 создаём таблицу статистики (0-255) и инкрементируем элемент таблицы с номером = значению элемента массива. Т.е. мы создаём таблицу статистики встречаемости чисел. Пример: при числе = 37, мы увеличим на один 37ой элемент таблицы и т.д.
 Теперь же разворачиваем таблицу, т.е. создав массив, где вначале идут Nное количество 0, потом 1, ... - ВСЁ! сортировали по возрастанию (вернее по неубыванию).

Как же получаем N? Берём из таблицы статистики.
Рассмотрим таблицу статистики:
НомерЭлемента-Значение
0-0
1-5
2-3
3-0
...

что это показывает:
чисел 0 в исходном массиве нет.
чисел 1 в исходном массиве 5.
чисел 2 в исходном массиве 3.
чисел 3 в исходном массиве нет.
...
N-это и есть количество чисел (т.е. сначала 0, потом 5, 3, 0...)

Думаю понятно выразился.

Сортировка массивов с элементами из 2 и более байт, заключается в сортировке сначала по первому байту, потом уже сортировка ГРУПП по второму байту....

Каково ваше мнение? сильно не ругайте. ошибок вроде нет.


 
Думкин ©   (2004-08-24 13:50) [1]

Отсортировать так массив из 10 чисел с диапазоном от 1 до 4*10^9.
Или строки с 10 буквенными словами.


 
Думкин ©   (2004-08-24 13:51) [2]

А вообще - http://delphimaster.ru/articles/dsort/index.html


 
Palladin ©   (2004-08-24 13:52) [3]

Оригинально но не практично...


 
Romkin ©   (2004-08-24 13:55) [4]

Это как же от длины-то не зависит?! Проходишь же весь массив. Хочешь сказать, ты одинаковое время на 10 и на 1000000 элементов потратишь? :))
А вообще - то, что ты привел, это упрощенная сортировка подсчетом ;)


 
Romkin ©   (2004-08-24 14:09) [5]

А вообще, молодец, если сам придумал :))


 
NikotiN ©   (2004-08-24 14:57) [6]

2 Romkin
я имел ввиду что длина массива не так сильно сказывается на производительности, как в других методах сортировки


 
NikotiN ©   (2004-08-24 15:01) [7]

2 Думкин
//Отсортировать так массив из 10 чисел с диапазоном от 1 до 4*10^9.
//Или строки с 10 буквенными словами
А в чём проблема?

2 Palladin
//Оригинально но не практично....
Почему?


 
Kerk ©   (2004-08-24 15:06) [8]


> NikotiN ©   (24.08.04 15:01) [7]

Тебе же ссылку дали.. ну почитай... :)

2 ALL: Продолжение ветки про калькулятор? :)


 
Думкин ©   (2004-08-24 15:11) [9]

>  [7] NikotiN ©   (24.08.04 15:01)

Это уже в приписке с разрядами не проблема.
А в изначальном, верхнем - очень даже проблема.


 
Palladin ©   (2004-08-24 15:46) [10]


> NikotiN ©   (24.08.04 15:01)

В реальнисти операции проводятся в основном с Integer...


 
Layner ©   (2004-08-25 13:22) [11]

А вот ABBYY Lingvo между прочим сортирует 100000 записей в доли секунды :)


 
Думкин ©   (2004-08-25 13:28) [12]

> [11] Layner ©   (25.08.04 13:22)

На 286-м? Или как?



Страницы: 1 вся ветка

Форум: "Потрепаться";
Текущий архив: 2004.09.12;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.036 c
14-1093272573
Копир
2004-08-23 18:49
2004.09.12
Лукашенку уговорили. Теперь он будет спать с "идеей".


1-1093695471
Don
2004-08-28 16:17
2004.09.12
Реестер


10-1019023143
Vlad.nojabrsk
2002-04-17 09:59
2004.09.12
Visibroker console не запускается под XP


14-1093172978
Piter
2004-08-22 15:09
2004.09.12
Что с Дремучими?


3-1092832076
Kurtevich
2004-08-18 16:27
2004.09.12
Ищу БД без БДЕ





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский