0

我有一个排序方法,我想计算方法所做的移动,但是应该计算的变量不计算任何东西,当我读到它时我只得到 0。

//En variabel för att man ska lagra info i den 
    //Tillfällig lagring. 
    int temp;
    int forflyttningarBubble = 0;
    int jamForElse = 0;

    //Loopar, loopen är inte mer än storleken på arrayen
    for(int i=0;i<allatal.length-1;i++ )
    {
       //En till loop
       for(int j=i+1;j<allatal.length;j++)
        { 
           //Om talet peckaren pekar på större än det andra
           //talet så ska programmet
           jamForElse++;
           if (allatal[i] > allatal[j])
           {
               forflyttningarBubble++;
               forflyttningarBubble++;
               forflyttningarBubble++;
               //Lagrar värdet array "i" i temp 
               temp = allatal[i];
               //Överför "j" till "i"
               allatal[i] = allatal[j];
               //temp värdet överförs till "i"
               allatal[j] = temp;
               forflyttningarBubble++;
            }
         }
    }
    statistik BubbleData = new statistik(jamForElse, forflyttningarBubble, allatal);
    return BubbleData;'

这是我使用的对象

public class statistik {
    public int jamForElse;
    public int byten;
    public int[] allatal;

    public statistik(int jamForElse, int byten, int[] allatal) {
        this.byten = byten;
        this.allatal = allatal;
        this.jamForElse = jamForElse;
    }
}

当我尝试将值写入文件时,我得到“0”

//Starttid
        long startTime = System.nanoTime();
        //Anropar metoden
        statistik bubble = bubbleSort(allatal);         
        //sluttiden
        long endTime = System.nanoTime();
        //för att få ett svar på tiden
        long duration = endTime - startTime;
        double seconds1 = (double)duration / 1000000000.0;

        //Gör en loop som är lika lång som arrayen
        for(int k=0;k<bubble.allatal.length-1;k++){
            //Lagrar informationen i filen 
            out.println(bubble.allatal[k]);
        }
        //Lagrar tiden också i filen
        out.println("BubbleSort (Nano): " + duration);
        out.println("Antal Sekunder: " + seconds1);
        out.println("Förflyttningar: " + bubble.byten);
        out.println("Jämförelser: " + bubble.jamForElse + "\n\n");
        System.out.print(bubble.byten); // i get "0"
4

1 回答 1

0

答案就在代码中

 bubbleSort(allatal);

其中有许多缺陷。基本上,很少处理落在边缘附近的案例。零元素数组永远不会落入内部循环,也永远不会更新byten字段。一个元素的数组也会发生同样的情况。

您是否验证了您的输入以确保您有足够的元素进行排序?小输入(大小为 0 或 1 的数组)将作为“已排序”通过它,它们是;但是,它们不需要任何实际操作。

于 2013-04-18T14:52:47.767 回答