(X)HTML, JavaScript, DHTML, XML, CSS Client scripting tehnologije, Dynamic HTML, Cascading Stylesheets, XML i standardi |
|
Alati teme | Način prikaza |
24. 02. 2010. | #1 |
Ivan Dilber
Sir Write-a-Lot
|
array intersection u JS
Treba mi presek 2 niza (lista elemenata koji se pojavljuju i u jednom i u drugom). E sad, naravno to mogu da uradim seljacki sa 2 petlje, ali posto ima jako puno elemenata n^2 efikasnost mi je prespora, zakuca se browser. Jel postoji neki efikasniji algoritam?
__________________
Leadership is the art of getting people to want to do what you know must be done. |
24. 02. 2010. | #2 |
profesionalac
Professional
Datum učlanjenja: 21.06.2005
Poruke: 294
Hvala: 93
525 "Hvala" u 19 poruka
|
Ovi su isto uradili seljacki. Mozda je njihov algoritam brzi.
http://phpjs.org/functions/array_intersect:318
__________________
/me sluša Ten Years After - Spider In My Web |
25. 02. 2010. | #3 |
Dejan Ranisavljevic
Certified
|
Kad smo vec kod optimizacije js-a ovo ne treba nikad raditi :
Kôd:
for (i=1; i < arguments.length; i++) { |
25. 02. 2010. | #4 |
dinosaurus
Master
Datum učlanjenja: 29.12.2005
Lokacija: Nova Engleska
Poruke: 636
Hvala: 79
263 "Hvala" u 66 poruka
|
Можеш ли да обезбедиш да низови буду сортирани пре него што тражиш интерсекцију?
|
25. 02. 2010. | #5 |
Ivan Dilber
Sir Write-a-Lot
|
bilo bi mi cudno da se length racuna (da se broji svaki put), verovatno niz objekat to cuva kao interni podatak koji samo prikaze?
@tata: mogu, nizove punim na pocetku, pa nije previse skupo da ih izsortiram
__________________
Leadership is the art of getting people to want to do what you know must be done. |
25. 02. 2010. | #6 | |
dinosaurus
Master
Datum učlanjenja: 29.12.2005
Lokacija: Nova Engleska
Poruke: 636
Hvala: 79
263 "Hvala" u 66 poruka
|
Citat:
Ево ти и код (нађох га негде на интернету, изгледа ок на први поглед): Kôd:
int[] a = {0,2,3,2,2,7,2,5,5,5,5,5,5}; int[] b = {0,0,0,0,3,7,3,2,2,2,4,5}; Arrays.sort(a); Arrays.sort(b); int i=0,j=0; while (i<a.length && j<b.length) { if (a[i]==b[j]) { // equal int n=a[i]; System.out.println(n); while (i<a.length && a[i]==n) i++; // skip equal while (j<b.length && b[j]==n) j++; // skip equal } else if (a[i]<b[j]) i++; // one is less else j++; // the other is less } Poslednja izmena od Dragi Tata : 25. 02. 2010. u 00:48. |
|
25. 02. 2010. | #7 |
profesionalac
Qualified
Datum učlanjenja: 15.09.2006
Lokacija: Zemlja cuda
Poruke: 114
Hvala: 11
3 "Hvala" u 3 poruka
|
|
25. 02. 2010. | #8 | |
Boban Karišik
Expert
|
Citat:
Off Topic: Ovo sam i ja procitao negde, cak sta vise, procitao sam da to vazi za bilo koji jezik koji nema kompajler..
__________________
Ako već nisi Anđeo, bar budi čovek... |
|
25. 02. 2010. | #9 |
VD IT Direktora
Invented the damn thing
Datum učlanjenja: 08.06.2005
Lokacija: Beograd
Poruke: 2.118
Hvala: 503
1.307 "Hvala" u 282 poruka
|
^ Logično je da važi za svaki jezik koji ima c-ovski for, nebitno "imao kompajler" ili ne, na čelu sa c-om...
|
25. 02. 2010. | #10 | |
Ivan Dilber
Sir Write-a-Lot
|
nije sporno da se to sto pise u uslovu svaki put poziva, ali ovde se radi o propertiju, koji se samo procita iz objekta, ne izracunava mu se vrednost svaki put (niz zna koliko je dugacak), pa je zato razlika minimalna...
Evo probajte i sami u firebugu: Kôd:
var a = []; var b = []; var start = new Date(); for(var i=0; i<1000000; i++) a.push(i); var end = new Date(); console.log( (end-start) /1000) var start = new Date(); for(var i=0; i<a.length; i++) b.push(i); var end = new Date(); console.log( (end-start) /1000) Citat:
Ali zato u php-u nikako ne treba raditi for($i=0; $i<count($nesto); $i++) jer to zaista broji elemente niza svaki put...
__________________
Leadership is the art of getting people to want to do what you know must be done. Poslednja izmena od ivanhoe : 25. 02. 2010. u 16:59. |
|
"Hvala" ivanhoe za poruku: |
|
|
Slične teme | ||||
Tema | Početna poruka teme | Forum | Odgovori | Poslednja poruka |
Sort multi dimensional array | cvele | Code snippets | 1 | 18. 11. 2008. 12:07 |
<input> array | misk0 | Sva početnička pitanja | 3 | 25. 06. 2008. 20:21 |
JavaScript: vrijednost nekog array polja | Dejan Topalovic | (X)HTML, JavaScript, DHTML, XML, CSS | 2 | 26. 03. 2007. 00:00 |
XML u array | bluesman | PHP | 15 | 06. 11. 2005. 14:03 |
Order array by relevance... | cvele | PHP | 3 | 25. 08. 2005. 18:10 |