Nefungční MergeSort – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Nefungční MergeSort – Java – Fórum – Programujte.comNefungční MergeSort – Java – Fórum – Programujte.com

 

Martin
~ Anonymní uživatel
1600 příspěvků
10. 2. 2013   #1
-
0
-

Zdravím všechny programátory, snažil jsem se napsat MergeSort v Javě, který jsem přepsal přesně podle pseudokódu ale z nějákého důvodu mi nefunguje a vrací se pořád stejně seřazená posloupnost prvků v poli. Netušíte v čem je chyba? Děkuji

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package mergesort;

/**
 *
 * @author okay
 */
public class MergeSort {

    private static int[] Merge(int pole[], int p, int q, int r) {
        int i = p;
        int j = q + 1;
        int k = 0;
        int[] nPole = new int[pole.length];
        while (j <= q && j <= r) {
            if (pole[i] <= pole[j]) {
                nPole[k] = pole[i];
                i++;
                k++;
            } else {
                nPole[k] = pole[j];
                j++;
                k++;
            }
            while (i <= q) {
                nPole[k] = pole[i];
                i++;
                k++;
            }
            while (j <= r) {
                nPole[k] = pole[j];
                j++;
                k++;
            }
            for (i = p; i < r; i++) {
                pole[i] = nPole[i];
            }
        }
        return pole;
    }

    public static int[] MergeSort(int pole[], int p, int r) {
        if (p < r) {
            int q = (p + r) / 2;
            MergeSort(pole, p, q);
            MergeSort(pole, q + 1, r);
            Merge(pole, p, q, r);
        }
        return pole;
    }

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        //int[] pole = new int[8];
        int pole[] = {1, 6, 2, 9, 7, 3, 5,};
        //for (int i = 0; i < 8; i++) {
        //  double temp = Math.random() * 8;
        //int temp2 = (int) temp;
        //pole[i] = temp2;
        //}
        int p = 0;
        int r = pole.length;
        int[] MergeSort = MergeSort(pole, p, r);
        for (int i = 0; i < pole.length; i++) {
            System.out.print(pole[i] + " ");
        }
        // TODO code application logic here
    }
}
Nahlásit jako SPAM
IP: 83.240.73.–
liborb
~ Redaktor
+18
Guru
12. 2. 2013   #2
-
0
-

   

int[] MergeSort = MergeSort(pole, p, r);
for (int i = 0; i < pole.length; i++) {
	System.out.print(pole[i] + " ");
}

Pokud dobře vidím, tak zavoláš MergeSort, kde jako parametr máš pole pole, které chceš setřídit. MergeSort ti vrátí setříděné pole MergeSort (na pojmenování by si měl trochu zapracovat :)) a ty pak vypíšeš původní nesetříděné pole pole.

Nahlásit jako SPAM
IP: 188.75.135.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 4 hosté

Podobná vlákna

Triedenie MergeSort — založil newo

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý