Hej, próbuje posortować metodą QuickSort tablicę wypełnioną losowymi liczbami. Jestem już blisko ale nie mogę wyświetlić na ekran posortowanej już tablicy. Myślę i myślęi nie wiem jak to napisać :D Zerknie ktoś na kod i mi pomoże ? :)
import java.util.Scanner;
import java.util.Random;
public class QuickSort {
static Scanner in = new Scanner(System.in);
static Random r = new Random();
public static void main(String[] args) {
System.out.println("Podaj ilość liczb do posortowania: ");
int w = in.nextInt();
int [] MojaTablica = new int[w];
sleep(2000);
System.out.format("Tablica składa się z %d nieposortowanych elementów\n", MojaTablica.length);
//Tworzenie losowej tablicy liczb
// "Przejście" przez całą tablicę i wypełnienie jej liczbami losowymi
for(int i=0; i<MojaTablica.length; i++)
MojaTablica[i]=r.nextInt(100)+1;
// Wyświetlenie zawartości całej tablicy (każdy element z osobna)
for(int i=0; i<MojaTablica.length; i++)
System.out.println(MojaTablica[i]);
System.out.println("Za 3 sekundy rozpocznie się sortowanie QuickSort ");
sleep(3000);
quickSort(MojaTablica, 0, MojaTablica.length-1);
System.out.println(MojaTablica);
}
public static void sleep(int time){
try {Thread.sleep(time);}
catch(Exception e) {}
}
//Sortowanie QuickSort
public static void quickSort (int [] arr, int left, int right){
int a = left;
int b = right;
int temp;
int pivot = arr[(left+right)/2];
//Proces partycjonowania
while (a<=b){
while (arr[a]<pivot)
a++;
if (a<=b){
temp=arr[a];
arr[a]=arr[b];
arr[b]=temp;
a++;
b--;
}
}
//powtarzanie procesu
if (left<b)
quickSort(arr,left,b);
if (a<right)
quickSort(arr,a,right);
}
}
Odrazu ,żeby nikt nie musiał szukać powiem ,że błąd jest w linijce System.out.println(MojaTablica);. Ale nie wiem jak mam zrobić żeby program wyświetlił posortowaną już tablicę. Bo nieposortowaną ale wypełnioną już liczbami to wyświetla. :)