» »

[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.

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 ()

Mavrik ::

Kje pa to zaganjaš? V Eclipsu?
The truth is rarely pure and never simple.

EWER115 ::

Ja

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

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
The truth is rarely pure and never simple.

EWER115 ::

Problem rešen..konzola...zapisano v beležko dela... Temo lahko zaklenete

MrBrdo ::

Btw če želiš izboljšat hitrost sortiranja si poglej IntroSort (kombinacija več sortirnih algoritmov): Introsort @ Wikipedia
MrBrdo


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[JAVA] HTTPS client

Oddelek: Programiranje
173166 (1896) peterv6i
»

[Java] Zasnova shoot em up igre

Oddelek: Programiranje
111187 (866) PecenkA
»

[java] uporaba baze .mdb z javo

Oddelek: Programiranje
51606 (1521) gtu
»

[JAVA] kako dobiti določene chare

Oddelek: Programiranje
131601 (1448) molotov
»

[JAVA] zaustavitev niti (threadov)

Oddelek: Programiranje
223162 (3162) morbo

Več podobnih tem