Az elmúlt hetekben több helyen is találkoztam ehhez hasonló mintakóddal, mivel az eredményeken jót mosolyogtam, gondoltam én is kiteszem. Nagy jelentősége persze nincsen, csupán érdekesség.
Adott egy 1000 elemű tömb, benne az elemek növekvő sorrendben. Vajon az egyes böngészők hány összehasonlítást használnak rendezés közben?
for (var i = 0; i < 1000; i++) {
list.push(i);
}
var count = 0;
list.sort(function(a, b){
++count;
if (a < b) {
return -1;
}
if (a > b) {
return 1;
}
return 0;
});
alert(count);
Az eredmények:
Firefox: 999 (n-1, ennél kevesebb vizsgálattal elméletileg sem lehetne)
Opera: 7498
Safari: 8977
Chrome: ~10000 (nem determinisztikus az eredmény, plusz-mínusz ezer)
IE: 17583
Kísérletképpen megnézhető még az is, hogy mi van, ha a tömbben minden elem egyenlő: list.push(1);
Chrome nulla lépéssel megoldotta mindezt. Na, ezzel nehéz versenyezni. :) Opera viszont majdnem hozta a buborékrendezésnél használt értéket a 499485 összehasonlítással. Buborékrendezés: (n-1)*n/2.
Végül, ha fordított a sorrend: list.push(1000-i); Firefox: 5681, Opera: 8550, Safari 8977, Chrome: ~11000 végül IE 15965