-
Data: 2012-11-24 12:53:01
Temat: Re: Potyczki
Od: bartekltg <b...@g...com> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]W dniu 2012-11-24 12:36, bartekltg pisze:
>
> Mając dodatkową pamięć dysku równo pierwotnej tablicy
> (a tak naprawdę 0.5) możemy posortować tablicę
> w 4 przebiegach _sekwencyjnego_ odczytu/zapisu.
>
> Dominantę w posortowanej tablicy znajdujemy już
> liniowo i szybko.
>
> Jak sortujemy: pobieramy paczki po 512MB (albo mnijsze,
> jeśli nasze 512MB jest sztywne i nie możemy dodać tym
> czegoś lon(n)), sortujemy w RAM czymkolwiek sprawnym.
>
> Mamy 8 posortowanych fragmentów pliku. Łączymy je mergesortem.
> w 4, w 2, i w końcu w posortowany.
>
> Co istotne, merga robimy nie bezpośrednio na dysku, ale na
> buforach w ramie. Pobieramy odcinki po jakies 100MB,
> kręcimy procedurą w mergesort, jak któryś bufor się wyczerpie,
> napełniamy go ponownie kolejnymi danymi z dysku.
>
> Dzięki temu czytamy sekwencyjnie, dysk nie lata ciągle np między
> początkiem a środkiem pliku.
>
> Niestety, nadal n log (n) i n*log(n/|RAM|) operacji (Sekwencyjnych)
> na dysku, ale równoważnych przesłaniu tych kilkudziesięciu GB
> - robialne.
Optymalizacja: znajdowanie dominanty można upchnąć w ostatnią
fazę mergesorta. Odpada jeden odczyt.
Jeśli posortowana tablica nie jest nam do szczęścia potrzebna,
możemy też jej nie zapisywać.
Czyli 4 odczyty i 3 zapisy (4 zapisy, jeśli chcemy zachować
posortowaną tablicę na potem)
oba +1 jeśli użyjemy kawałków po 256MB.
pzdr
bartek
Następne wpisy z tego wątku
- 24.11.12 12:54 PK
- 24.11.12 13:02 Roman W
- 24.11.12 13:04 bartekltg
- 24.11.12 13:08 Roman W
- 24.11.12 13:09 Roman W
- 24.11.12 13:09 e...@g...com
- 24.11.12 13:11 Roman W
- 24.11.12 13:11 Michoo
- 24.11.12 13:14 Michoo
- 24.11.12 13:16 e...@g...com
- 24.11.12 13:18 bartekltg
- 24.11.12 13:37 slawek
- 24.11.12 13:39 Michoo
- 24.11.12 13:40 slawek
- 24.11.12 14:13 bartekltg
Najnowsze wątki z tej grupy
- Alg. kompresji LZW
- Popr. 14. Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- Arch. Prog. Nieuprzywilejowanych w pełnej wer. na nowej s. WWW energokod.pl
- 7. Raport Totaliztyczny: Sprawa Qt Group wer. 424
- TCL - problem z escape ostatniego \ w nawiasach {}
- Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- testy-wyd-sort - Podsumowanie
- Tworzenie Programów Nieuprzywilejowanych Opartych Na Wtyczkach
- Do czego nadaje się QDockWidget z bibl. Qt?
- Bibl. Qt jest sztucznie ograniczona - jest nieprzydatna do celów komercyjnych
- Co sciaga kretynow
- AEiC 2024 - Ada-Europe conference - Deadlines Approaching
- Jakie są dobre zasady programowania programów opartych na wtyczkach?
- sprawdzanie słów kluczowych dot. zła
- Re: W czym sie teraz pisze programy??
Najnowsze wątki
- 2025-03-10 roaming
- 2025-03-10 wodor
- 2025-03-10 Ostrów Wielkopolski => NodeJS Developer <=
- 2025-03-10 Białystok => System Architect (background deweloperski w Java) <=
- 2025-03-10 Częstochowa => Backend Developer (Node + Java) <=
- 2025-03-10 Poznań => Konsultant wdrożeniowy Comarch XL (Logistyka, WMS, Produkc
- 2025-03-10 Bydgoszcz => Specjalista ds. Sprzedaży (transport drogowy) <=
- 2025-03-10 China-Kraków => Senior PHP Symfony Developer <=
- 2025-03-10 Chiny-Kraków => Senior PHP Symfony Developer <=
- 2025-03-10 Szczecin => Key Account Manager IT <=
- 2025-03-10 Warszawa => Node.js / Fullstack Developer <=
- 2025-03-10 Warszawa => Data Engineer (Tech Leader) <=
- 2025-03-10 Gliwice => Business Development Manager - Network and Network Security
- 2025-03-10 Warszawa => Presales Engineer IT <=
- 2025-03-10 Warszawa => Architekt rozwiązań (doświadczenie w obszarze Java, AWS