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

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

Δημοσ.
 
private static long merge(int[] a, int left, int mid, int right, int[] temp) {
        int i = left;
        int j = mid;
        int counter = left;
        long inversionCount = 0;
        while (i < mid && j <= right) {

            if (a[i] <= a[j]) {
                temp[counter++] = a[i++];
                
            } else {
                temp[counter++] = a[j++];
                inversionCount += (mid - i);
            }
            System.out.println(k);
        }


        while (i < mid) {
            temp[counter++] = a[i++];
        }

        while (j <= right) {
            temp[counter++] = a[j++];
        }

        for (int c = left; c <= right; c++) {
            a[c] = temp[c];
        }

        return inversionCount;
    }
}

Εχω την παραπάνω κλάση mergesort. Θα ήθελα να προσθέρω σε μια μεταβλητή πχ var  κάθε φορά που υπάρχει αντιστροφή μεταξύ δυο αριθμών που απέχουν μεταξύ τους κατα 1. Οταν ισχύει αυτό τότε var++. 

} else {
                temp[counter++] = a[j++];
                inversionCount += (mid - i);
            }

προσπάθησα στο παρακάτω κομμάτι να προσθέσω if(a[j]-a==1) var++ , αλλα δεν λειτούργησε,,,,Μπορεί κάποιος να προτείνει λύσει.....???!!!!!

 

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...