Oficiálně byl vydán Android 16. Detaily na blogu a stránkách věnovaných vývojářům.
Byla vydána nová verze 14.3 svobodného unixového operačního systému FreeBSD. Podrobný přehled novinek v poznámkách k vydání.
CSIRT.CZ upozorňuje, že na základě rozhodnutí federálního soudu ve Spojených státech budou veškeré konverzace uživatelů s ChatGPT uchovávány. Včetně těch smazaných.
Ač semestr ve škole právě končí, bastlíři ze studentského klubu Silicon Hill neodpočívají a opět se jako každý měsíc hlásí s pravidelným bastlířským setkáním Virtuální Bastlírna, kde si můžete s ostatními techniky popovídat jako u piva o novinkách, o elektronice, softwaru, vědě, technice obecně, ale také o bizarních tématech, která se za poslední měsíc na internetu vyskytla.
Z novinek za zmínku stojí Maker Faire, kde Pájeníčko předvedlo … více »Na WWDC25 byl představen balíček Containerization a nástroj container pro spouštění linuxových kontejnerů na macOS. Jedná se o open source software pod licencí Apache 2.0 napsaný v programovacím jazyce Swift.
Do 16. června do 19:00 běží na Steamu přehlídka nadcházejících her Festival Steam Next | červen 2025 doplněná demoverzemi, přenosy a dalšími aktivitami. Demoverze lze hrát zdarma.
Apple na své vývojářské konferenci WWDC25 (Worldwide Developers Conference, keynote) představil řadu novinek: designový materiál Liquid Glass, iOS 26, iPadOS 26, macOS Tahoe 26, watchOS 26, visionOS 26, tvOS 26, nové funkce Apple Intelligence, …
Organizátoři konference LinuxDays 2025, jež proběhne o víkendu 4. a 5. října 2025 v Praze na FIT ČVUT, spustili přihlašování přednášek (do 31. srpna) a sběr námětů na zlepšení.
Po roce byla vydána nová stabilní verze 25.6.0 svobodného multiplatformního multimediálního přehrávače SMPlayer (Wikipedie).
DNS4EU, tj. evropská infrastruktura služeb DNS založená na vysoce federovaném a distribuovaném ochranném ekosystému, byla spuštěna v testovacím režimu [𝕏]. Na výběr je 5 možností filtrování DNS.
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 */
Tiskni
Sdílej:
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ů.
start+(end-start)/2
lze napsat takto: (start+end)/2