Autor | Zpráva | ||
---|---|---|---|
Anonymní Profil * |
#1 · Zasláno: 28. 4. 2005, 18:32:16
Pouzil jsem pole1.sort() a ono to usporadalo nejak nedobre. Co s tim? Podle mne je vse spravne.
www.volny.cz/peter.mlich/sorting.htm Jedna se o radek 325: case 99: pole1.sort();presun=true;break; |
||
Fred Profil |
#2 · Zasláno: 28. 4. 2005, 18:41:56
Peta vůbec nějak nechápu o co ti tam jde, ale když jsem tohle hledal použil jsem něco z odkazů na téhle stránce http://www.mickweb.com/javascript/arrays/ , tak doufám, že ti to pomůže.
|
||
Peta Profil * |
#3 · Zasláno: 28. 4. 2005, 19:07:42
Je to test rychlosti serazovvani nekolik metod. Zjednodusena verze je tato:
(zajimalo by mne, proc se mi to chova, jako by to pretekalo pole) <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head> <title>Trideni</title> <style type="text/css"> #cisla1 {border:1px solid #000} div div {padding:0;margin:0 0 1px 0;height:1px;_height:0;font-size:2px; width:0;background:#0000ff} </style> <script type="text/javascript" language="javascript"><!-- Begin // Original: FREE 2005 Peter Mlich http://www.volny.cz/peter.mlich/ function objGet(x) { if (typeof x!='string') return x; else if (Boolean(document.getElementById)) return document.getElementById(x); else if (Boolean(document.all)) return eval('document.all.'+x); else return null; } function objv(x,z) {objGet(x).value=z} function obji(x,z) {objGet(x).innerHTML=z} function objch(x) {return objGet(x).checked} var pocet=1000; var pocet1=pocet-1; var pole1z=new Array(pocet); var tt=""; var time=0; function vysledek2() { var t1,t2,i,j; var v="pole1z" tt="";t1='<div style="width:';t2='px" \/><\/div>\n' for (i=0;i<pocet;i++) { tt+=t1+''+eval(v+"["+i+"]")+t2; } } function nahoda2() // swap rnd { var x,y,i,j,k,c; for (y=0;y<pocet;y++) {pole1z[y]=y} for (x=0;x<30;x++) for (y=0;y<pocet;y++) { i=Math.floor(Math.random()*pocet) j=Math.floor(Math.random()*pocet) k=Math.floor(Math.random()*pocet) c=pole1z[i] pole1z[i]=pole1z[j] pole1z[j]=pole1z[k] pole1z[k]=c } } function ppstart() { obji('cisla1',"2\/3 serazuji...") var time1=new Date(); pole1z.sort(); var time2=new Date(); time2=time2.getTime()-time1.getTime(); objv('vspeed',time2) obji('cisla1',"3\/3 zobrazeni (nekdy s presunem)") vysledek2();obji('cisla2',tt) } function init() { nahoda2() location.href="#pptop"; } // End --></script> </head> <body onload="init()"> <form action="#"> <center> <span id="pptop"></span> <h3>Sorting (trideni JS)</h3> <input type="button" value="Start" onclick="ppstart()" /> Speed: <input type="text" value="0" size="5" id="vspeed" /> ms </form> Vysledek2: (v2) <div id="cisla1">Data2 ...</div> </body> </html> |
||
Časová prodleva: 7 dní
|
|||
Peta Profil * |
#4 · Zasláno: 5. 5. 2005, 17:53:52
Sem to vystroural na intervalu, neni sort jako sort.
pole.sort() - kdyz se jedna o text 2,11,1,22,111 -> 1,11,111,2,22 (cili textove ok, ciselne nikoli) pole.sort(podminka) - kdyz se jedna o cisla 2,11,1,22,111 -> 1,11,111,2,22 function podminka(a,b) {return a-b} // kladne cislo vetsi nebo rovno, zaporne mensi, hodnotu ignoruje. Uf, uf, to mam radost, ze mi to funguje :) JUHU: Mohl bys to nejak pripsat na stranku k polim? http://www.jakpsatweb.cz/javascript/pole.html Nevim, mozna jsem tu nekde videl priklad, mozna to bylo na intervalu nebo kdesi. Take jsem to ted nasel v jedne diskusi, ale u pole bych to hledal na webce. |
||
Leo Profil |
#5 · Zasláno: 5. 5. 2005, 18:48:42
Ta pomocna tridici fce se musi volat pokazde, kdyz pole chcete tridit jinak nez podle anglicke abecedy / napriklad pro razeni ciselne nebo abecedni ceske. Na druhou stranu ma tu vyhodu, ze si muzete nadefinovat sve vlastni jakekoliv trideni. Podminkou je, aby tridici fce mela dva argumenty a vracela 0 pokud jsou si v poradi rovne, kladne cislo pokud je a PO b, a zaporne pokud je a PRED b. Leo
|
||
Časová prodleva: 19 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0