public class Quicks
{
public static void main(String args[])
{ int temp;
int[] list={5,1,7,6,4,0,8,9};
int i;
for(i=0;i<=6;i++)
{
if(list[i]>list[i+1]);
{
temp=list[i+1];
list[i+1]=list[i];
list[i]=temp;
}
}
for(i=0;i<=6;i++)
{
System.out.println(list[i]);
}
}
}
这是我得到的输出 1 7 6 4 0 8 9
我的第一个疑问是5
为什么7和6没有被交换
答案 0 :(得分:5)
你的第一个问题。
你的循环:
for(i=0;i<=6;i++)
{
System.out.println(list[i]);
}
将是:
for(i=0;i<=7;i++)
{
System.out.println(list[i]);
}
因为你的数组大小是8而没有7,而且6-0 + 1 = 7,所以你不打印最后一个元素。
如果你对代码进行分析,你会认为循环将数组的第一个元素移动到最后一个位置。如果要对数组进行排序,这不是代码。
答案 1 :(得分:0)
如果您使用IDE,它应该向您显示一条警告,说明您的if状态是否为空体 - 这是因为您在行尾不能放置分号,而不应该在那里。
我建议将大括号{
放在行尾,而不是下一行,以避免出现此类错误。
至于为什么不打印5 - 正如其他人提到的那样,你不会遍历整个数组。