Форум сайта python.su
o7412369815963merge() - функция слияния. - это не просто слияние, но и по сути сортировка, тогда все работает.Zubchickтуфта и надувательство, эта ф-ия не делает ничего:
питончую сортировку слияниями :) http://algolist.manual.ru/sort/faq/q10.php
или сильно оптимизированный вариант, но более сложная реализация http://algolist.manual.ru/sort/faq/q13.phpи пример там не рабочийlist-type mergesort (list-type L; int n) {
if (n = 1) return (L) else {
разделить L на две половины L1 и L2;
return (merge (mergesort (L1,n/2), mergesort (L2,n/2)) );
}
}
merge() - функция слияния.
Офлайн
o7412369815963Вот в качестве примера сортировки файла с 1000 чисел типа double(сортировка слиянием, как описано тут http://algolist.manual.ru/sort/faq/q10.php) :o7412369815963merge() - функция слияния. - это не просто слияние, но и по сути сортировка, тогда все работает.Zubchickтуфта и надувательство, эта ф-ия не делает ничего:
питончую сортировку слияниями :) http://algolist.manual.ru/sort/faq/q10.php
или сильно оптимизированный вариант, но более сложная реализация http://algolist.manual.ru/sort/faq/q13.phpи пример там не рабочийlist-type mergesort (list-type L; int n) {
if (n = 1) return (L) else {
разделить L на две половины L1 и L2;
return (merge (mergesort (L1,n/2), mergesort (L2,n/2)) );
}
}
merge() - функция слияния.
Офлайн
А кого нить есть пример (на python) многофазной сортировки слиянием для файлов? Теория есть и пример на С тоже (тут http://algolist.manual.ru/sort/faq/q13.php), но все же, если у кого нить есть пример на python поделитесь, пожалуйста?
Офлайн
по-моему с такими объемами лучше субд использовать
Офлайн
pasaranaxХорошо, допустим СУБД. Предложите, пожалуйста, свой вариант на MySQL к примеру.
по-моему с такими объемами лучше субд использовать
Офлайн
Ну вот как-то так:
# -*- coding: utf-8 -*-
import MySQLdb
db = MySQLdb.Connect(user='root', passwd='111', db='test')
cur = db.cursor()
numbers = open('numbers.txt')
cur.execute('TRUNCATE TABLE `numbers`')
cur.executemany('INSERT INTO `numbers` SET `number`=%s', numbers)
numbers_sorted = open('numbers_sorted.txt', 'w+')
cur.execute('SELECT `number` FROM `numbers` ORDER BY `number`')
for row in cur.fetchall():
numbers_sorted.write(str(row[0]) + '\n')
CREATE TABLE `numbers` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`number` double DEFAULT NULL,
KEY `id` (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=15 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
Отредактировано (Окт. 23, 2010 04:33:34)
Офлайн
радикально…
Офлайн
esalВот нечто похожее от автора языка:
А кого нить есть пример (на python) многофазной сортировки слиянием для файлов?
Офлайн
отсортировал через mysql миллион значений за 233 секунды, значит миллиард получится за 64 часа =D
Офлайн
Получится дольше - зависимость нелинейная.
“Классический” вариант - многопутевое слияние предварительно отсортированных небольших кусочков, насколько я это себе представляю.
Офлайн