Forum » Programiranje » [Java] Quicksort
[Java] Quicksort
EWER115 ::
Lp!
Imam problem in sicer imam 1000 10.000 50.000... števil naključno urejenih.
Uporabil sem naveden sortirni algoritem in pri 1000 dela normalno, za 10.000 in več pa npr. ko naj bi jih uredil in ko izpišem tabelo se sploh ne začnejo pri poziciji 0 izpisovat ampk šele zadnjih 4000 približno, skratka polovica jih fali.
Števila berem iz datoteke, drugače se isti problem pojavlja tudi če naredim za probo tabelo brez branja, tako da ne vem.
Imam problem in sicer imam 1000 10.000 50.000... števil naključno urejenih.
Uporabil sem naveden sortirni algoritem in pri 1000 dela normalno, za 10.000 in več pa npr. ko naj bi jih uredil in ko izpišem tabelo se sploh ne začnejo pri poziciji 0 izpisovat ampk šele zadnjih 4000 približno, skratka polovica jih fali.
Števila berem iz datoteke, drugače se isti problem pojavlja tudi če naredim za probo tabelo brez branja, tako da ne vem.
import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.util.Random; public class QuickSort { public static void main(String[] args) throws IOException { String prebrana; int tab[]=new int[10000]; BufferedReader brVrstice = new BufferedReader(new FileReader("C:\\QuickSort\\Urejena10000.txt")); int i=0; while(brVrstice.ready()) { prebrana=brVrstice.readLine(); int st = Integer.valueOf(prebrana).intValue(); tab[i]=st; i++; } brVrstice.close(); long a=System.currentTimeMillis(); quickSort(tab, 0, tab.length-1); long b=System.currentTimeMillis(); for(int ui=0;ui<tab.length;ui++) System.out.println(ui+" "+tab[ui]); System.out.println(b-a); } public static void quickSort(int[] tab, int start, int end) { int i = start; int j = end; int x = tab[(i+j)/2]; int w; do { while(tab[i]<x) i++; while(x<tab[j]) j--; if (i<=j) { w = tab[i]; tab[i] = tab[j]; tab[j] = w; i++; j--; } }while(i<=j); if(start<j) quickSort(tab, start, j); if(i<end) quickSort(tab, i, end); } }
- spremenil: Mavrik ()
EWER115 ::
Tukaj je primer za 10.000 že urejenih, naj jih uredi (čeprav so že) in ko jih namesto da bi tabelo izpisooval kako je v zanki se pravi od indexa 0 do tab.length,,, jo začne šele pri 6000
tukaj pa za 1000 kjer deluje vse ok...za urejena...obratno urejena in nakljucna
tukaj pa za 1000 kjer deluje vse ok...za urejena...obratno urejena in nakljucna
Zgodovina sprememb…
- spremenil: EWER115 ()
Mavrik ::
Konzola v Eclipsu je omejena na število vrstic, ki jih drži v svojem bufferju, kar je verjetno glavni razlog da ne vidiš vseh rezultatov.
Opcije ko jih imaš:
1.) V Window -> Preferences -> Run/Debug -> Console izklopi omejitev
2.) Izpiši rezultat v datoteko
3.) Poženi program v terminalu
Opcije ko jih imaš:
1.) V Window -> Preferences -> Run/Debug -> Console izklopi omejitev
2.) Izpiši rezultat v datoteko
3.) Poženi program v terminalu
The truth is rarely pure and never simple.
MrBrdo ::
Btw če želiš izboljšat hitrost sortiranja si poglej IntroSort (kombinacija več sortirnih algoritmov): Introsort @ Wikipedia
MrBrdo
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | [JAVA] HTTPS clientOddelek: Programiranje | 3166 (1896) | peterv6i |
» | [Java] Zasnova shoot em up igreOddelek: Programiranje | 1187 (866) | PecenkA |
» | [java] uporaba baze .mdb z javoOddelek: Programiranje | 1606 (1521) | gtu |
» | [JAVA] kako dobiti določene chareOddelek: Programiranje | 1601 (1448) | molotov |
» | [JAVA] zaustavitev niti (threadov)Oddelek: Programiranje | 3162 (3162) | morbo |