Nieprawidłowy wynik po wykonaniu sortowania bąbelkowego

0

Witam,
Próbuję posortować bąbelkowo tablice, analizując wszystkie algorytmy wydaje mi się że mam poprawnie skonstruowany swój, lecz wynik wychodzi inaczej. Mógłby mnie ktoś oświecić, bo chyba już zgłupiałem :p

int[] tablica = new int[30];
		Random rand = new Random();
		int bufor;
		
		/// wypełnienie tablicy wartościami 0-100
		for(int i = 0; i < tablica.length; i++){
			tablica[i] = rand.nextInt(100);
		}
		
		
		/// 5 3 2 8 1 12
		/// zamiana miejscami
		for(int j = 0; j < tablica.length-1; j++){
			if(tablica[j] > tablica[j+1] ){
				bufor = tablica[j];
				tablica[j] = tablica[j+1];
				tablica[j+1] = bufor;
				
			}
			
		}
1

Robisz tylko jeden przebieg zaś musisz zrobić n-1 przebiegów, lub dopóki cały kolejny przebieg nie zrobi żadnej zamiany.
Każdy kolejny przebieg można kończyć na pozycji ostatniej zamiany z poprzedniego przebiegu.

1

No dobrze to nie jest.
Tylko raz przebiegasz po tablicy, więc widać, że coś tu nie tak wiedząc, że bubblesort ma złożoność O(n^2).

Tym sposobem tylko 1 wartość jest na "swoim" miejscu.

0

Dzięki za "naprowadzenie" mnie na właściwe tory, teraz mam nadzieję że mi się uda ;)

Solved ^^

for(int v = 0; v < tablica.length; v++){
		for(int j = 0; j < tablica.length-1; j++){
			if(tablica[j] > tablica[j+1] ){
				bufor = tablica[j];
				tablica[j] = tablica[j+1];
				tablica[j+1] = bufor;
			
			}
		}
		}
0

Okropnie nieoptymalna realizacja.

0

Nigdy nie miałem styczności z optymalizacją kodu, szukałem czegoś sensownego w google mającego na celu uświadomienie mi pare rzeczy i nie wiele z tego wynikało. Jakieś polecane godne źródło mogące mnie nauczyć tego i owego z zakresu optymalizacji?

1 użytkowników online, w tym zalogowanych: 0, gości: 1