秋意阑珊318 2022-03-10 02:15 采纳率: 62.5%
浏览 72
已结题

初学者,写了七小时的代码,仍有问题,请教。

需要能够选择数组出现的方式,有自行输入和随机数自动生成。但是运行的自行输入的有bug,然后排序结果的只有第一个排序有过程。求指教。

import java.util.*;



public class chap02 {

    



    public static void main(String[]args) {

        System.out.println("请输入你要进行排序的数字个数:");

        Scanner input1=new Scanner(System.in);

        Scanner in=new Scanner(System.in);

        

        int num =input1.nextInt();

        int[]a=new int[num];

        int s=in.nextInt();

        if(s==1) {

            Scanner inp=new Scanner(System.in);    

            for(int i=0;i<a.length;i++) {

                a[i]=inp.nextInt();

                

            }
    }else {          

        int k=0;

        while(k<=num-1) {

            int t=(int)(Math.random()*1000);

            boolean b=false;

            for(int i=0;i<a.length;i++) {

                if(t==a[i]){

                        b=true;

             }

         }

             if(b!=true) {

                 a[k]=t;

                 k++;

             }

        } 

        

    

        input1.close();

        

        

    

        int[]templist=a;
    System.out.println("初始状态"+Arrays.toString(a)+"下面进行插入排序");

        int[]b=InserSort(a);

        System.out.println("经过插入排序后的最终状态"+Arrays.toString(b));

        

        a=templist;

        System.out.println("\n\n初始状态"+Arrays.toString(a)+"下面进行冒泡排序");

        int []c=BubbleSort(a);

        System.out.println("经过冒泡排序后最终状态"+Arrays.toString(c));

        

        a=templist;

        System.out.println("\n\n初始状态"+Arrays.toString(a)+"下面进行选择排序");

        int []d=SelectionSort(a);

        System.out.println("经过选择排序后最终状态"+Arrays.toString(d));

        }

    }
    public static int[]InserSort(int []a){

        int i,j,num=0;

        for(i=1;i<a.length;i++) {

            for(j=0;j<=i;j++) {

                if(a[i]<a[j]) {

                    int temp=a[i];

                    for(int k=i;k>j;k--) {

                        a[k]=a[k-1];

                    }

                    a[j]=temp;

                }

            }

            System.out.println("第"+(++num)+"趟排序"+Arrays.toString(a));

        }

        return a;

                

             

    }
public static int[]BubbleSort(int []a){

        int i,j,num=0;

          for (i =a.length -1; i >0 ; i--) {    // 比较顺序 第一遍:找出最小值给索引为9的数组

                for (j = 0; j < i; j++) {

                    if(a[j] > a[j+1]){  //当前面的索引小于后面的索引,把两个数据值调换

                        int temp = a[j];

                        a[j] = a[j+1];

                        a[j+1] = temp;

                    }

                }

                System.out.println("第"+(++num)+"趟排序"+Arrays.toString(a));

            }

          return a;

}

    

    public static int[]SelectionSort(int[]a){

        int i,j,num=0;

        for(i=0;i<a.length;i++) {

            for(j=i+1;j<a.length;j++) {

                if(a[i]>a[j]) {

                    int temp=a[i];

                    a[i]=a[j];

                    a[j]=temp;

                }

            }

            System.out.println("第"+(++num)+"趟排序"+Arrays.toString(a));

        }

        return a;

    }      

}


  • 写回答

3条回答 默认 最新

  • zcrazy胡说八道 2022-03-10 09:41
    关注

    import java.util.*;

    public class chap02 {

    public static void main(String[]args) {
    
        System.out.println("请输入你要进行排序的数字个数:");
        Scanner input1 = new Scanner(System.in);
        int num =input1.nextInt();
    
    
        System.out.println("请选择数组出现的方式 1.手动输入 2.随机生成:");
        Scanner in = new Scanner(System.in);
        int s=in.nextInt();
    
        int[] a=new int[num];
    
        if(s==1) {
            System.out.println("请输入"+num+"个需要排序的整数:");
            Scanner inp=new Scanner(System.in);
            for(int i=0;i<a.length;i++) {
                a[i]=inp.nextInt();
            }
            inp.close();
        }else if(s == 2) {
            int k = 0;
            while (k <= num - 1) {
                int t = (int) (Math.random() * 1000);
                boolean b = false;
                for (int i = 0; i < a.length; i++) {
                    if (t == a[i]) {
                        b = true;
                    }
                }
                if (b != true) {
                    a[k] = t;
                    k++;
                }
            }
        } else{
            System.out.println("让你选择1或2你不懂吗?!!");
            return ;
        }
        in.close();
        input1.close();
    
        int [] templist1 = a.clone();
        System.out.println("初始状态"+Arrays.toString(a)+"下面进行插入排序");
        int[] b = InserSort(templist1);
        System.out.println("经过插入排序后的最终状态"+Arrays.toString(b));
    
        int [] templist2 = a.clone();
        System.out.println("\n\n初始状态"+Arrays.toString(a)+"下面进行冒泡排序");
        int []c=BubbleSort(templist2);
        System.out.println("经过冒泡排序后最终状态"+Arrays.toString(c));
    
        int [] templist3 = a.clone();
        System.out.println("\n\n初始状态"+Arrays.toString(a)+"下面进行选择排序");
        int []d=SelectionSort(templist3);
        System.out.println("经过选择排序后最终状态"+Arrays.toString(d));
    }
    
    
    public static int[]InserSort(int []a){
        int i,j,num=0;
        for(i=1;i<a.length;i++) {
            for(j=0;j<=i;j++) {
                if(a[i]<a[j]) {
                    int temp=a[i];
                    for(int k=i;k>j;k--) {
                        a[k]=a[k-1];
                    }
                    a[j]=temp;
                }
            }
            System.out.println("第"+(++num)+"趟排序"+Arrays.toString(a));
        }
        return a;
    }
    
    public static int[]BubbleSort(int []a){
        int i,j,num=0;
        for (i =a.length -1; i >0 ; i--) {    // 比较顺序 第一遍:找出最小值给索引为9的数组
            for (j = 0; j < i; j++) {
                if(a[j] > a[j+1]){  //当前面的索引小于后面的索引,把两个数据值调换
                    int temp = a[j];
                    a[j] = a[j+1];
                    a[j+1] = temp;
                }
            }
            System.out.println("第"+(++num)+"趟排序"+Arrays.toString(a));
        }
        return a;
    
    }
    
    
    
    public static int[]SelectionSort(int[]a){
        int i,j,num=0;
        for(i=0;i<a.length;i++) {
            for(j=i+1;j<a.length;j++) {
                if(a[i]>a[j]) {
                    int temp=a[i];
                    a[i]=a[j];
                    a[j]=temp;
                }
            }
            System.out.println("第"+(++num)+"趟排序"+Arrays.toString(a));
        }
        return a;
    }
    

    }

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 3月18日
  • 已采纳回答 3月10日
  • 创建了问题 3月10日

悬赏问题

  • ¥15 Mac系统vs code使用phpstudy如何配置debug来调试php
  • ¥15 目前主流的音乐软件,像网易云音乐,QQ音乐他们的前端和后台部分是用的什么技术实现的?求解!
  • ¥60 pb数据库修改与连接
  • ¥15 spss统计中二分类变量和有序变量的相关性分析可以用kendall相关分析吗?
  • ¥15 拟通过pc下指令到安卓系统,如果追求响应速度,尽可能无延迟,是不是用安卓模拟器会优于实体的安卓手机?如果是,可以快多少毫秒?
  • ¥20 神经网络Sequential name=sequential, built=False
  • ¥16 Qphython 用xlrd读取excel报错
  • ¥15 单片机学习顺序问题!!
  • ¥15 ikuai客户端多拨vpn,重启总是有个别重拨不上
  • ¥20 关于#anlogic#sdram#的问题,如何解决?(关键词-performance)