我有一个排序方法,我想计算方法所做的移动,但是应该计数的变量不计算任何东西,当我读它时我只得到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"
答案 0 :(得分:0)
答案在
的代码中 bubbleSort(allatal);
其中有许多缺陷。基本上,几乎没有处理落在边缘附近的情况。零元素数组永远不会落入内循环,也永远不会更新byten
字段。一个元素的数组也会发生同样的情况。
您是否验证了输入以确保您有足够的元素进行排序?小输入(大小为零或一个的数组)将通过它作为“已经排序”,它们是;但是,它们不需要任何实际操作。