Skocz do zawartości

Programowanie obiektowe, program do sortowania


Artur Orysz

Recommended Posts

Witajcie!

Mam do wykonania program na zaliczenie  mierzący szybkość sortowaną rożnymi metodami tablicy składającej się z 100000 elementów, każdy element ma być z zakresu od 2000 do 50000. Następnie testujemy prędkość sortowania dla tablicy nieposortowanej, posortowanej do połowy, posortowanej w kolejności rosnącej i kolejności malejącej: Wymyśliłem to sobie tak: 

  1. Tworzę najpierw losowo wygenerowaną tablicę o podanych elementach
  2. Na jej podstawie tworzę wszystkie wspomniane warianty wbudowanymi metodami
  3. Z ich użyciem testuję wszystkie sortowania.

Jestem skrajnie początkujący w Javie, chcę zrobić to zadanie  tylko przy użyciu klas. Problem w tym że nie do końca łapie o co chodzi :(, nie wiem jak przekazać te posortowane tablice dalej jako obiekty 

import java.util.Arrays;
import java.util.Random;

public class main {
	//tablica podstawowa
    public static void main(String args[]) {

        int low = 2000;
        int high = 50000;
        int size = 100000;
        int[] baseArray = new int[size];
        int[] randomSorted = baseArray.clone();
       

        createArray(baseArray, size, low, high);
        sortArrays(baseArray, size, low, high);
		
      // jak wywołać tu np: tu y
        //bubbleSort();
        //insertionSort();
      //dla każdej tablic
      
      
    // #### Tworzę tablice szablonów ####
    public static void createArray(int[] baseArray, int size, int low, int high) {
        for (int i = 0; i < baseArray.length; i++) {
            Random randomNumber = new Random();
            baseArray[i] = randomNumber.nextInt(high - low) + low;
        }
        System.out.println(Arrays.toString(baseArray));
    }

    //Kopiuje bazową tablicę,tworząc nową tablicę dla:
    public static void sortArrays(int[] baseArray, int size, int low, int high) {

        //dla danych losowych
        int[] randomSorted = baseArray.clone();
        System.out.println("Dla danych losowych " + Arrays.toString(randomSorted));

        //dla danych posortowanych w kolejności rosnącej
        int[] ascendingSorted = baseArray.clone();
        Arrays.sort(ascendingSorted);
        System.out.println("Dla danych posortowanych w kolejności rosnącej " + Arrays.toString(ascendingSorted));

        //dla danych częściowo posortowanych 
        int[] partiallySorted = baseArray.clone();
        //Sortuj tablicę tylko do połowy (czyli od 0 do "długości" skopiowanej tablicy dzielonej na pół)
        Arrays.sort(partiallySorted, 0, (partiallySorted.length / 2));
       System.out.println("Dla danych częściowo posortowanych (do połowy) " + Arrays.toString(partiallySorted));

        //oraz dla danych posortowanych w kolejności malejącej
        int[] descendingSorted = baseArray.clone();
        for (int i = 0; i < descendingSorted.length; i++) {
            descendingSorted[i] = ascendingSorted[ascendingSorted.length - 1 - i];
        }
       System.out.println("Dla danych posortowanych w kolejności malejącej " + Arrays.toString(descendingSorted));

    }
//
    public static  void bubbleSort() {
    //tu kod np dla sortowania bąbelkowego
    };
      
     public static  void insertionSort() {
    //tu kod np dla sortowania bąbelkowego
    };
    
        
}

 

Link do komentarza
Udostępnij na innych stronach

no to podajesz w tych metodach jako argument tablicę czyli musisz zadeklarować tak:

public static void bubbleSort(int[] arrayToSort){
  //tutaj sortujesz odpowiednią metodą
}

 zwracać nie musisz tych tablic aczkolwiek gdybys chciał to zamiast voida podajesz tablicę intów czyli 

public static int[] bubbleSort(int[] arrayToSort){
  //...
}

i wywyłujesz tak każdą metodę sortowania. Przed wywołaniem i po wywyłaniu metody sortowania mierzysz czas wykonania i wypisujesz odpowiednie komunikaty.

Link do komentarza
Udostępnij na innych stronach

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gość
Odpowiedz...

×   Wkleiłeś zawartość bez formatowania.   Usuń formatowanie

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Utwórz nowe...