Προς το περιεχόμενο

Java: Περίεργη συμπεριφορά σε Bubblesort με random numbers


pbp

Προτεινόμενες αναρτήσεις

Δημοσ.

Γεια σας,

Έχω φτιάξει 2 κλάσεις, Μια Main και μια με συναρτήσεις bubblesort.

>package bubblesort;


import java.util.Random;

public class Main {

   
   public static void main(String[] args) {
       int[] A = new int[10];
       Random randomNumbers = new Random();
       for (int i = 0; i < 10; i++) {
         A[i]=(i+1)*10;
           //A[i] = randomNumbers.nextInt( 1000 ); //dimiourgia tuxaiwn arithmwn.
       }
       BubbleSort.PrintArray(A);
       System.out.println("\n");
       //bubble sort! fthinousa seira.
       BubbleSort.Fthinousa(A);
       BubbleSort.PrintArray(A);
       //bubble sort! auksousa seira.
       System.out.println("\n");
       BubbleSort.Auksousa(A);
       BubbleSort.PrintArray(A);
   }
   

}]

>
package bubblesort;

public class BubbleSort {

   public static void Fthinousa(int[] A) {
       for (int i = A.length; i > 1; i--) {
           for (int j = 0; j < i - 1; j++) {
               if (A[j] < A[j + 1]);
               {
                   int temp = A[j];
                   A[j] = A[j + 1];
                   A[j + 1] = temp;
               }
           }
       }
   }
   
       public static void Auksousa(int[] A) {
       for (int i = A.length; i > 1; i--) {
           for (int j = 0; j < i - 1; j++) {
               if (A[j] > A[j + 1]);
               {
                   int temp = A[j];
                   A[j] = A[j + 1];
                   A[j + 1] = temp;
               }
           }
       }
   }

   public static void PrintArray(int[] A) {
       for (int i = 0; i < A.length; i++) {
           System.out.printf("%d\n", A[i]);
       }
   }
}

 

Το πρόβλημα είναι ότι αν δουλέψω το πρόγραμμα με δικές μου τιμές δουλεύει κανονικά.

Αν Όμως χρησιμοποιήσω την Random για τυχαίες τιμές τότε η ταξινόμησή μου δεν δουλεύει σωστά.

Μπορείτε να μου εξηγήσετε τι συμβαίνει παρακαλώ?

Ευχαριστώ πολύ.

Δημοσ.

για βγάλε τα ; μετά τις συνθήκες if

 

Oops :}

 

Σορρυ.

Με την ευκαιρία όμως γιατι δουλεύει με τον πρώτο τρόπο και όχι με τον δεύτερο παρόλο τη βλακεία λάθος μου?

Δημοσ.

λοιπόν το θέμα είναι ότι το if(statement);

με το semicolon( ; ) ακυρώνεις το if(statement)

αυτό σημαίνει ότι το block εντολών που ακολουθεί θα τρέξει κανονικά

{

function1();

function2();

}

άρα έτσι πως έχεις τους κώδικες στις 2 συναρτήσεις σου,

το μόνο που κάνει είναι να αλλάζει την σειρά που είναι ήδη μέσα οι αριθμοί,

αυτό μπορείς να το διαπιστώσεις αλλάζοντας την σειρά που εκτελείς την αύξουσα

και την φθίνουσα ταξινόμηση, ή βάζοντας 2 φορές την ίδια , το πρόγραμμα "τρέχει"

 

κατάλαβες; :)

Δημοσ.

λοιπόν το θέμα είναι ότι το if(statement);

με το semicolon( ; ) ακυρώνεις το if(statement)

αυτό σημαίνει ότι το block εντολών που ακολουθεί θα τρέξει κανονικά

{

function1();

function2();

}

άρα έτσι πως έχεις τους κώδικες στις 2 συναρτήσεις σου,

το μόνο που κάνει είναι να αλλάζει την σειρά που είναι ήδη μέσα οι αριθμοί,

αυτό μπορείς να το διαπιστώσεις αλλάζοντας την σειρά που εκτελείς την αύξουσα

και την φθίνουσα ταξινόμηση, ή βάζοντας 2 φορές την ίδια , το πρόγραμμα "τρέχει"

 

κατάλαβες; :)

 

Απόλυτα!

Αρα τυχαία δουλεύει σωστά στην πρώτη περίπτωση γιατί βάζω τα στοιχεια κατα φθίνουσα σειρά και τα μετατρέπω σε αύξουσα ενω με τους τυχαίους αριθμούς τα κανει μαντάρα ^^ ...

Σε ευχαριστώ πολύ,

Σορρυ και πάλι για την βλακεία ερώτηση μου,

να σαι καλα :)

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...