从代码猜测楼主的意图是想看冒泡排序的过程,从大到小和从小到大,每排一次把结果打印一次?
按照我的猜测做了修改,楼主的代码错误实在很多,主要是对冒泡排序掌握不扎实,还有就是引用数组是从0到length-1的。
反正错误很多啦,贴出修改后的代码,改动的地方有注释,楼主自己看吧。
import java.util.Arrays;
import java.util.Scanner;
public class orde2{
public static void main(String[] orgs){
Scanner sc = new Scanner(System.in);
System.out.println("请输入数字个数");
int num = sc.nextInt();
int[]figure = new int[num];
//增加两个数组。
int[]figure1 = new int[num];
int[]figure2 = new int[num];
System.out.println("请输入数字");
for(int i = 0;i<figure.length;i++){ //此处修改 从0开始 <=改为<
figure[i] = sc.nextInt();//此处修改
}
System.out.println("输入时的数字顺序如下:");
for(int i = 0;i< figure.length;i++){ //此处修改 从0开始 <=改为<
//figure[i] = sc.nextInt(); //此处修改
System.out.print(figure[i]+"\t");
}
System.out.println();
System.out.println("输入后的数字顺序如下:");
System.arraycopy(figure, 0, figure1, 0, figure.length);
System.arraycopy(figure, 0, figure2, 0, figure.length);
for(int i = 0;i< figure.length;i++){ //此处修改 <=改为<
//figure[i] = sc.nextInt();
exchanger1(figure1,i); //此处修改 exchager1 -->exchanger1
System.out.print("大到小"+Arrays.toString(figure1) +"\t");
exchanger2(figure2,i); //此处修改 exchager2 -->exchanger2
System.out.print("小到大"+Arrays.toString(figure2)+"\t");
System.out.println();
}
System.out.println();
}
//冒泡 从大到小
static void exchanger1(int figure [],int step){
// int[]figure3 = new int[num]; //此处修改
// for(int i = figure.length-1;i>0;i++){ //for循环整个修改
for(int j = 0;j<figure.length-step-1;j++){
if(figure[j]<figure[j+1]){
int num = 0;
num = figure[j];
figure[j] = figure[j+1];
figure[j+1] = num;
}
}
}
// }
//冒泡从小到大
static void exchanger2(int figure [],int step){
// int[]figure3 = new int[num]; //此处修改
// for(int i = figure.length-1;i>0;i++){ //for循环整个修改
for(int j = 0;j<figure.length-step-1;j++){
if(figure[j]>figure[j+1]){
int num = 0;
num = figure[j];
figure[j] = figure[j+1];
figure[j+1] = num;
}
}
}
// }
}
运行效果:
输入时的数字顺序如下:
3 1 4 2 6 4
输入后的数字顺序如下:
大到小[3, 4, 2, 6, 4, 1] 小到大[1, 3, 2, 4, 4, 6]
大到小[4, 3, 6, 4, 2, 1] 小到大[1, 2, 3, 4, 4, 6]
大到小[4, 6, 4, 3, 2, 1] 小到大[1, 2, 3, 4, 4, 6]
大到小[6, 4, 4, 3, 2, 1] 小到大[1, 2, 3, 4, 4, 6]
大到小[6, 4, 4, 3, 2, 1] 小到大[1, 2, 3, 4, 4, 6]
大到小[6, 4, 4, 3, 2, 1] 小到大[1, 2, 3, 4, 4, 6] |