我的代码要求用户输入一定的温度并打印出平均值,然后按照升序和降序排列温度。对于升序,我使用了选择排序和降序,我使用了冒泡排序。我的问题是,当我使用冒泡排序时,最后一个排序的元素不打印,我不知道它为什么这样做。我究竟做错了什么?气泡排序不打印最后一个元素
public static void main(String[] args) {
Scanner keyboard=new Scanner(System.in);
System.out.println("How many temperatures?");
int size=keyboard.nextInt();
int temp[]=new int[size];
System.out.println("Please enter "+temp.length+" temperatures");
double sum=0;
for(int i=0;i<temp.length;i++){
temp[i]=keyboard.nextInt();
sum=sum+temp[i];
}
double average=sum/temp.length;
System.out.println("The average temperature is: "+average);
System.out.println(" ");
System.out.println("Selection sort algorithm for ascending order");
int min;
for (int i = 0; i < temp.length; i++) {
min = i;
for (int j = i + 1; j < temp.length; j++) {
if (temp[j] < temp[min]) {
min = j;
}
}
if (min != i) {
int temporary_var = temp[i];
temp[i] = temp[min];
temp[min] = temporary_var;
}
System.out.print(temp[i]+ " ");
}
System.out.println("");
System.out.println("Bubble sort algorithm for descending order");
for(int i=0; i<temp.length-1; i++)
{
if(temp[i]>temp[i+1])
{
int temporary_var = temp[i ]; //swap elements
temp[i] = temp[ i+1 ];
temp[i+1] = temporary_var;
}
System.out.print(temp[i]+" ");
}
}
}
当我使用(int i = 0; i
2014-11-14 18:57:01
而不是if(temp [i]> temp [i +1])如果((我 temp [i + 1]) –
Abe
2014-11-14 19:02:12
我会试试这个,因为我有一个索引超出范围 – 2014-11-14 19:02:27