abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    včera 05:00 | Nová verze

    Byla vydána beta verze Linux Mintu 22.3 s kódovým jménem Zena. Podrobnosti v přehledu novinek a poznámkách k vydání. Vypíchnout lze, že nástroj Systémová hlášení (System Reports) získal mnoho nových funkcí a byl přejmenován na Informace o systému (System Information). Linux Mint 22.3 bude podporován do roku 2029.

    Ladislav Hagara | Komentářů: 2
    včera 01:55 | Nová verze

    GNU Project Debugger aneb GDB byl vydán ve verzi 17.1. Podrobný přehled novinek v souboru NEWS.

    Ladislav Hagara | Komentářů: 0
    19.12. 17:22 | IT novinky

    Josef Průša oznámil zveřejnění kompletních CAD souborů rámů tiskáren Prusa CORE One a CORE One L. Nejsou vydány pod obecnou veřejnou licenci GNU ani Creative Commons ale pod novou licencí OCL neboli Open Community License. Ta nepovoluje prodávat kompletní tiskárny či remixy založené na těchto zdrojích.

    Ladislav Hagara | Komentářů: 14
    19.12. 17:00 | Komunita

    Nový CEO Mozilla Corporation Anthony Enzor-DeMeo tento týden prohlásil, že by se Firefox měl vyvinout v moderní AI prohlížeč. Po bouřlivých diskusích na redditu ujistil, že v nastavení Firefoxu bude existovat volba pro zakázání všech AI funkcí.

    Ladislav Hagara | Komentářů: 0
    19.12. 10:11 | IT novinky

    V pořadí šestou knihou autora Martina Malého, která vychází v Edici CZ.NIC, správce české národní domény, je titul Kity, bity, neurony. Kniha s podtitulem Moderní technologie pro hobby elektroniku přináší ucelený pohled na svět současných technologií a jejich praktické využití v domácích elektronických projektech. Tento knižní průvodce je ideální pro každého, kdo se chce podívat na současné trendy v oblasti hobby elektroniky, od

    … více »
    Ladislav Hagara | Komentářů: 8
    19.12. 03:11 | Komunita

    Linux Foundation zveřejnila Výroční zprávu za rok 2025 (pdf). Příjmy Linux Foundation byly 311 miliónů dolarů. Výdaje 285 miliónů dolarů. Na podporu linuxového jádra (Linux Kernel Project) šlo 8,4 miliónu dolarů. Linux Foundation podporuje téměř 1 500 open source projektů.

    Ladislav Hagara | Komentářů: 0
    19.12. 02:11 | Zajímavý článek

    Jean-Baptiste Mardelle se v příspěvku na blogu rozepsal o novinkám v nejnovější verzi 25.12.0 editoru videa Kdenlive (Wikipedie). Ke stažení také na Flathubu.

    Ladislav Hagara | Komentářů: 0
    19.12. 02:00 | Nová verze

    OpenZFS (Wikipedie), tj. implementace souborového systému ZFS pro Linux a FreeBSD, byl vydán ve verzi 2.4.0.

    Ladislav Hagara | Komentářů: 0
    19.12. 01:00 | IT novinky

    Kriminalisté z NCTEKK společně s českými i zahraničními kolegy objasnili mimořádně rozsáhlou trestnou činnost z oblasti kybernetické kriminality. V rámci operací OCTOPUS a CONNECT ukončili činnost čtyř call center na Ukrajině. V prvním případě se jednalo o podvodné investice, v případě druhém o podvodné telefonáty, při kterých se zločinci vydávali za policisty a pod legendou napadeného bankovního účtu okrádali své oběti o vysoké finanční částky.

    Ladislav Hagara | Komentářů: 9
    18.12. 14:44 | IT novinky

    Na lepší pokrytí mobilním signálem a dostupnější mobilní internet se mohou těšit cestující v Pendolinech, railjetech a InterPanterech Českých drah. Konsorcium firem ČD - Telematika a.s. a Kontron Transportation s.r.o. dokončilo instalaci 5G opakovačů mobilního signálu do jednotek Pendolino a InterPanter. Tento krok navazuje na zavedení této technologie v jednotkách Railjet z letošního jara.

    Ladislav Hagara | Komentářů: 8
    Kdo vám letos nadělí dárek?
     (27%)
     (2%)
     (13%)
     (2%)
     (2%)
     (2%)
     (10%)
     (25%)
     (17%)
    Celkem 48 hlasů
     Komentářů: 15, poslední dnes 09:50
    Rozcestník

    Quicksort

    6.3.2005 13:00 | Přečteno: 3994× | Linux | poslední úprava: 8.7.2005 09:43

    Nemaje klasického informatického vzdělání byl jsem toho ve škole ušetřen. O čem mluvím? Všechny ty algoritmy pro třídění a tak. No a pak to člověk potřebuje a neví. Když už to zjistí, tak si to chce vytesat do kamene. Ehm do webu. Tak taky rozšířím zbytečně duplicitní stránky, na kterých je taková, nebo onaká implementace quicksortu. Až to zas někdy budu potřebovat a jestli bude abíčko ještě existovat, tak to třeba tady najdu.

    #include <sys/time.h>
    #include <stdio.h>
    #include <stdlib.h>
    
    #define timedif(start, stop) \
      (u_int)((stop)->tv_sec - (start)->tv_sec - ((stop)->tv_usec < (start)->tv_usec))
    
    #define utimedif(start, stop) \
      (u_int)((stop)->tv_usec - (start)->tv_usec + 1000000*((stop)->tv_usec < (start)->tv_usec))
    
    #define N       (10000000)
    #ifndef __u_char_defined
    typedef __u_int u_int;
    #endif
    u_int numbers[N];
    
    #define swap(i,j) \
      { register u_int pom=*i; *i=*j; *j=pom; }
    
    void quicksort(u_int *start, u_int *end)
    {
      u_int *i, *low=start;       /* low is place for pivot */
      for(i=start; i<end; i++)
      {
        if(*i<*end) /* end element is pivot */
        {
          swap(i, low);
          low++;
        };
      };
      swap(low, end);  /* place pivot to his place */
      if(start<low-1)
        quicksort(start, low-1);
      if(low+1<end)
        quicksort(low+1, end);
    }
    
    int main(void)
    {
      u_int rand_seed;
    #ifdef __USE_BSD
      struct timezone foo_;
      struct timezone *foo=&foo_;
    #else
      void *foo=NULL;
    #endif
      struct timeval start, stop;
    
      gettimeofday(&start, foo);
      rand_seed = start.tv_usec;
      srand(rand_seed);
    
      {     /* init numbers */
        u_int i;
        for(i=0; i<N; i++)
          numbers[i]=rand();
      }
    
      /* start measure */
      gettimeofday(&start, foo);
      quicksort(numbers, numbers+N-1);
      /* measure time */
      gettimeofday(&stop, foo);
      printf("#Sorting %d numbers consumed %d.%06dsec\n",
          N, timedif(&start, &stop), utimedif(&start, &stop));
    
      {     /* test result */
        u_int i;
        char OK=1;
        for(i=0; i<N-1 && (OK &= numbers[i]<= numbers[i+1]); i++);
        printf(OK?"All OK.\n":"Something bad.\n");
        return !OK;
      }
    }

    P.S.: Tato implementace není vhodná pro částečně setříděné pole. Patch pro částečně setříděná pole:

    @@ -20,6 +20,7 @@
     void quicksort(u_int *start, u_int *end)
     {
       u_int *i, *low=start;       /* low is place for pivot */
    +  swap(start+(end-start)/2, end);
       for(i=start; i<end; i++)
       {
         if(*i<*end) /* end element is pivot */
           

    Hodnocení: 100 %

            špatnédobré        

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    Komentáře

    Vložit další komentář

    6.3.2005 15:52 Christof | skóre: 22 | Havířov
    Rozbalit Rozbalit vše BogoSort
    QuickSort je k ničemu, nejlepší třídící algoritmus je BogoSort :-) viz http://en.wikipedia.org/wiki/Bogosort
    6.3.2005 19:15 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
    Rozbalit Rozbalit vše Re: BogoSort
    Tak ten je fakt dobrej. Ten ihned implementuju do svého realtime adaptivního regulátoru.
    XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
    Vašek Lorenc avatar 7.3.2005 01:02 Vašek Lorenc | skóre: 27
    Rozbalit Rozbalit vše Re: BogoSort
    Tak, jak je tam uvedený, má jednu zásadní chybku -- když půjde všechno šejdrem, není nikde zaručeno, že to vůbec skončí.. Ale jinak je to dost kvalitka, o tom žádná :)
    ...včetně majestátného loosa
    6.3.2005 16:32 Honza "tux" Friesse | skóre: 15 | blog: Tuxův blog | Vyškov
    Rozbalit Rozbalit vše To se hodí...
    ... ještě sem hoď nějaké stromové etudy (AVL stromy,...) a nějaké vyhledávací algoritmy (třeba boyer-moora). To by opravdu mnohým pomohlo (včetně mě).
    Vašek Lorenc avatar 6.3.2005 17:05 Vašek Lorenc | skóre: 27
    Rozbalit Rozbalit vše Re: To se hodí...
    A případně trochu povídání o dynamickém programování a aproximativních algoritmech, ať si lidi trochu počtou -- evidentně je to občas potřeba a praktické příklady kolem toho se hodí..
    ...včetně majestátného loosa
    6.3.2005 23:33 Jiri Bajer | skóre: 34 | blog: Sarimuv koutek | Praha
    Rozbalit Rozbalit vše Re: To se hodí...
    Mrkni se na knihovnu Aapl, treba tam najdes uz hotove reseni... Why to reinvent the wheel? ;-)
    7.3.2005 08:48 Ladislav Thon
    Rozbalit Rozbalit vše Malá noticka terminologická...
    Je to skutečně třídění, nebo spíš řazení? :)
    7.3.2005 09:12 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
    Rozbalit Rozbalit vše Re: Malá noticka terminologická...
    No to mě mohlo napadnout, ale nenapadlo. Tak jo, je to řazení. Spokojen?
    XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
    7.3.2005 09:26 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
    Rozbalit Rozbalit vše Re: Malá noticka terminologická...
    A vlastně jo. Je to třídící algoritmus, jehož výsledkem je seřazená posloupnost. Jiné řadící algoritmy možná skutečně provádějí řazení, ale tenhle ne. Tenhle třídí. Co jiného dělá tahle část?
      for(i=start; i<end; i++)
      {
        if(*i<*end) /* end element is pivot */
        {
          swap(i, low);
          low++;
        };
      };
    
    Ta část jednoznačně provádí třídění na prvky menší než *end a na prvky nemenší. To je třídění jak vyšité. Je to třídící algoritmus na řazení rpvků.
    XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
    7.3.2005 17:44 Michal Marek (twofish) | skóre: 55 | blog: { display: blog; } | Praha
    Rozbalit Rozbalit vše Re: Malá noticka terminologická...
    O řadících algoritmech jsem ještě neslyšel... Ale je pravda, že železniční doprava není zrovna můj obor :)
    8.3.2005 08:30 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
    Rozbalit Rozbalit vše Re: Malá noticka terminologická...
    Ale no tak. Vždyť má pravdu. Třídící algoritmus by musel něco třídit a třídění je rozdělování nějakého souboru dat do kategorií. Výsledkem řazení je seřazený soubor dat, což je jaksi něco úplně jiného.
    XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
    8.8.2005 08:23 net-ray
    Rozbalit Rozbalit vše Dodatek
    Vyraz start+(end-start)/2 lze napsat takto: (start+end)/2
    b42 avatar 7.6.2007 22:44 b42 | skóre: 12 | Ostrava/Brno
    Rozbalit Rozbalit vše Re: Quicksort
    (ja vim ze jsem se asi o dva roky zpozdil, ale kdyby na to nekdo nekdy nahodou narazil tak:) http://googleresearch.blogspot.com/2006/06/extra-extra-read-all-about-it-nearly.html

    Založit nové vláknoNahoru

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.