我想要输出10 12 23 45 90的顺序
但是输出了10 12 45 90 23的顺序,这代码哪里有问题
你是想用冒牌排序吗?怎么看起来怪怪的,对是不可能对的。我给你改改不介意吧?
public class Homework {
public static void main(String[] args) {
int[] arr = {10, 12, 45, 90};
int[] arr1 = new int[arr.length + 1];
for(int i=0; i<arr.length;i++){
arr1[i] = arr[i];
}
arr1[4] = 23;
for(int i=0; i<arr1.length;i++){
for(int j=0; j<arr1.length-i-1; j++){
if(arr1[j] > arr1[j+1]){
int temp = arr1[j];
arr1[j] = arr1[j+1];
arr1[j+1] = temp;
}
}
}
arr = arr1;
for (int i=0; i<arr.length; i++){
System.out.print(arr[i] + " ");
}
}
}
排序那里有问题。修改如下:
public class Homework04 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] arr = {10,12,45,90};
int [] arr1 = new int[arr.length+1];
for(int i=0;i<arr.length;i++) {
arr1[i]=arr[i];
}
arr1[4] = 23;
//arr1[5] = 1;
// System.out.println("原arr1:");
// for(int i=0;i<arr1.length;i++) {
// System.out.print (arr1[i]+" ");
// }
// System.out.println();
//
for(int i=0;i<arr1.length-1;i++) { //外层循环遍历前length-1个数
for(int j=i;j<arr1.length;j++) { //内存循环比较当然i位置的数到数组最后一个数
if(arr1[i]>arr1[j]) { //把当前i位置的数和后面的数比较,如果i位置的数大于后面的数,则交换他们,从而达到排序数组的目的
//System.out.println("befor,arr1["+i+"]="+arr1[i]+",arr1["+j+"]="+arr1[j]);
int temp = arr1[i];
arr1[i] =arr1[j];
arr1[j]=temp;
//System.out.println("after,arr1["+i+"]="+arr1[i]+",arr1["+j+"]="+arr1[j]);
}
}
}
// for(int i=0;i<arr1.length-1;i++) {
// for(int j=arr1.length-1;j>0;j--) {
// if(arr1[j-1]>arr1[j]) {
// int temp = arr1[j];
// arr1[j] =arr1[j-1];
// arr1[j+1]=temp;
// }
// }
// }
// System.out.println("排序后:");
//
// System.out.println("原arr1:");
// for(int i=0;i<arr1.length;i++) {
// System.out.print (arr1[i]+" ");
// }
// System.out.println();
arr=arr1;
for(int i=0;i<arr.length;i++) {
System.out.print (arr[i]+" ");
}
}
}
改成arr1[i-1] 试试