一维数组的应用和冒泡排序法还有Arrays类

例题1:求最大值

        从键盘输入本次Java考试五位学生的成绩,求考试成绩最高分

            思想是:1.从键盘上输入(代表你需要创建一个Scanner的类然后获取成绩),需要创建一个数组存储每一次的学生的成绩

                           2.获取5个学生的成绩(代表你要输入五次学生的成绩这是一个循环的动作可以使用for循环

                           3.然后比较成绩:可以先假设一个成绩[0]为最高值然后去进行比较

                           4.如果比较的值比假设值要大则替换假设值,然后继续比较,如果比较值小于假设值那么不进行替换继续比较(可以用if判断,for进行每次比较的循环)

代码如下:

             //从键盘输入本次Java考试五位学生的成绩,求考试成绩最高分
             double[] score=new double[5];
             double max =score[0];
             Scanner sc =new Scanner(System.in);
             for(int i =0;i<5;i++){
                    System.out.print("请输入第"+(i+1)+"位的成绩");
                    score[i] = sc.nextDouble();
             }
             for (int i = 0; i < score.length; i++) {
                    if(max<score[i]){
                           max=score[i];
                           
                    }
                    
             }
             System.out.println("成绩的最高分"+max);

例题2:插入数值

    有一组学员的成绩{99,85,82,63, 60},将它们按降序排列。要增加一个学员的成绩,将它插入成绩序列,并保持降序

        思想:

            1.要加入一个学员的成绩,就要扩大数组,所以要建立一个数组的长度比原来的大1的长度

            2.然后把原来数组的数据一一对应存入在新的数据中

            3.要增加一个学员的成绩就要从键盘上录入一个信息(就是创建一个scanner的类)

            4.要保持降序,就要先找到新数据比原来数据的大小然后得到他的下标

            5.下标后面的数据要依次向后后移一位(注意是从后面向前移动)

            6.这样得到的那个下标,给它赋值

            7.最后遍历一边数组输出查看

代码:
             //1)先定义一个新的数组用来插入新的数据
             int[] num={99,85,82,63,60};
             int[] score= new int[num.length+1];
             for(int i =0;i<num.length;i++){
                    score[i]=num[i];
             }
             
             //2)创建Scanner的类获取新的成绩
             Scanner sc =new Scanner(System.in);
             System.out.println("请输入要增加的成绩");
             int num2=sc.nextInt();
             
             //3)循环比较得到插入的下标
             int index=score.length-1;
             for(int i=0;i<score.length;i++){
                    if(num2>score[i]){
                           index=i;
                           break;
                    }
             }
             
             //4)插入之后的数据向后移一位(注意是从后向前移动)
             for(int i =score.length-1;i>index;i--){
                    score[i]=score[i-1];
                    
             }
             
             //5)移动后index那个数组就空出来了然后给它赋值
             score[index]=num2;
             
             
             //6)遍历一遍数组 看看
             
             for (int i = 0; i < score.length; i++) {
                    System.out.print(score[i]+" ");
             }

例题:删除数组指定元素

        int[] num={11,25,96,65,49,78,95};

        思路:

            删除指定就要在键盘上获取他的下标所以要创建Scanner类

            输入下标然后找到它

            找到下标之后,下标后面的数据依次后移一位,最后一个赋予默认值

代码:
            //1.要先创建一个Scanner的类
             Scanner sc =new Scanner(System.in);
             //2.输入下标并找到他
             System.out.println("请输入下标(0-6)");
             int index = sc.nextInt();
             //找到下标之后 依次向后覆盖 最后给最后一个元素赋予初始值
             for (int i = index; i < num.length; i++) {
                    
                    num[index]=num[index+1];
                    
             }
             //最后给最后一个值赋予初始值  
             //给他进行一个判断使得
             if(index>=0&&index<num.length){
                    num[num.length-1]=0;
                    
             }
             
             //输出数组
             for (int b : num) {
                    System.out.print(b+" ");
             }

冒泡排序

升序

            思想: 每次比较相邻的两个数

                        比较大小,第一个数要是比第二个数大则他俩交换

                        每轮结束后最大的值交换到最后

例题:把下列数组int[] num={11,56,94,78,33};用冒泡排序升序

 int[] num={11,56,94,78,33};
             System.out.println("比较前数组:");
             for (int i = 0; i < num.length; i++) {
                    System.out.print(num[i]+" ");
             }
             System.out.println();
             //外循环控制比较的行数
             for(int i=0;i<num.length-1;i++){
                    //内循环控制比较的次数
                    for(int j =0;j<num.length-1-i;j++){
                           if(num[j]>num[j+1]){
                                 int temp=num[j];
                                 num[j]=num[j+1];
                                 num[j+1]=temp;
                                 
                           }
                           
                    }
                    
             }
             System.out.println("比较后数组:");
             for (int i = 0; i < num.length; i++) {
                    System.out.print(num[i]+" ");
             }

降序

    思想

        每次比较相邻的两个数

        比较大小,第一个数要是比第二个数小则他俩交换

        每轮结束后最小的值交换到最后

例题:// 使用冒泡排序对输入5同学成绩进行降序
             //创建Scanner
             Scanner sc = new Scanner(System.in);
             //创建一个数组来存放输入的成绩
             int[] score=new int[5];
             for(int i =0;i<5;i++){
                    System.out.println("请输入第"+(i+1)+"位同学的成绩");
                    score[i] =sc.nextInt();
             }
             
             //利用循环外循环控制行数(控制进行几轮比较)
             for(int i =0;i<score.length-1;i++){
                    //内循环控制列数(控制他的每一轮比较的次数)
                    for (int j = 0; j < score.length-1-i; j++) {
                           //进行判定利用if比较输入的成绩的大小进行降序
                           if(score[j]<score[j+1]){
                                 int temp=score[j];
                                 score[j]=score[j+1];
                                 score[j+1]=temp;    
                           }
                    }
                    
                    
             }
             //在遍历一下数组输出
             for (int i = 0; i < score.length; i++) {
                    System.out.print(score[i]+" ");
             }

冒泡排序速记口诀(升序)

    N 个数字来排队

    两两相比小靠前 

    外层循环 N-1 

    内层循环 N-1-i

Arrays类

                sort()方法: 对数组进行升序排列

             //arrays.sort(数组名):对数组进行升序排列

         

   int[] num ={11,22,02,3,55,65};

             Arrays.sort(num);

             for (int i : num) {

                    System.out.print(i+" ");

             }

             System.out.println();

             //boolean equals(array1,array2)  是用与 比较array1和array2两个数组是否相等

          

  int[] num1={11,12,15,14};

             int[] num2={11,15,12,13};

             boolean risde=Arrays.equals(num1,num2);

             System.out.println(risde);

             //String toString(array)   将一个数组array转换成一个字符串

            

String str= Arrays.toString(num2);

             System.out.println(str);

             //void fill(array,val)     把数组array所有元素都赋值为val

           

 int[] num3={55,45,24,45};

             System.out.println(Arrays.toString(num3));

             Arrays.fill(num3,66);

             System.out.println(Arrays.toString(num3));

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值