数组

在这里插入图片描述
1.数组的一些基本概念:
1.1数组是一个变量,储存相同数据类型的一组数据;
1.2在内存上划出遗传连续空间;
1.3基本要素:
1.3.1标识符:数组名称用于区分不同的数组;
数组元素:向数组中存放的数据;
元素下标:对数组元素进行编号,从0开始到a.length-1结束,a为数组名称,通过下标可以访问到每个元素;
1.4使用步骤
1.41声明数组
分配空间(1,2可以合并)
赋值
处理数据
1.5典型应用
1.51实现数组的排序(1,双重循环;2,Arrays.sort(数组名))
求数组的极值
向数组(有序无序,自定义,手动输入)中插入元素

//数组基本格式

```php
       int a[]=new int[5];//...........................定义一个动态数组(未赋值组内数据,甚至没有赋值数组大小)
        a[0]=1;//.......................................赋值组内数据,下标从0开始,小于组值数;
        a[1]=2;
        a[3]=4;
        System.out.println(a[1]);
        System.out.println(a[4]);//.....................输出找不到下标(未赋值),int类型默认0;



        //规律数组可以用循环输入
        int a[]=new int[5];//..........................定义一个动态数组,5个变量;
        for (int i=0;i<a.length;i=i+1){//..............a.length为数组长度,此题对应5;
            a[i]=i+1;//................................循环增加a【i】
        }
        System.out.println(a[4]);


        //静态赋值
//        int a[]={1,2,3,4,5};//.........................静态赋值属于数组内值确定的情况下使用,现实一般都是动态输入(重新定义值);



        //动态数组,手动输入数值并处理(输入成绩求学生平均分)
//        Scanner s=new Scanner(System.in);
        int a[]=new int[5];//.......................................定义一个动态数组,5个变量;
        double b=0,c;//.............................................b为成绩和,c为平均分;
        for (int i=0;i<a.length;i=i+1){//...........................a数组循环
            System.out.print("请输入第"+(i+1)+"个学生的成绩:");
            a[i]=s.nextInt();//.....................................循环输入成绩,重点;
            b=b+a[i];
        }c=b/a.length;
        System.out.println("平均分是:"+c);



       //数组排序,重点,2重循环(循环比较)
        //1,arrays.sort[a]直接取数组排列(直接调用程序),最简单;
//        int a[]={50,45,56,78,98,78};//..................................定义一个动态数组,6个变量;
        Arrays.sort(a);//...............................................向系统调用数组排列
        for (int i=0;i<a.length;i=i+1){//...............................正向排列数组
            System.out.print(a[i]+"\t");
        }

        for (int i=a.length-1;i>=0;i=i-1){//...............................反向排列数组(更改初始值,条件变量和范围即可)
            System.out.print(a[i]+"\t");



        //2,使用2重循环排列数组(使用上面的数组)
        int t;//..........................................................添加中间变量比较3个大小;
        for (int i=0;i<a.length;i++){//...................................外层依次选中一个;
            for (int j=0;j<a.length;j++){//...............................内层一轮与外层选中的一个变量相比较;
                if (a[i]<a[j]){//.........................................><控制排列顺序,冒泡排列;
                    t=a[i];//................................................. 添加中间变量是因为程序中的=是为覆盖,
                                                                           // 所以先用中间变量把被覆盖的变量给代换出来。
                                                                          // 冒泡法的编程思想为两数比较大小排列,例如12.23.34.45,这样比较,
                                                                         // 就能和每个数比较大小,从而使变量插队到合适的位置
                                                                        // (内层循环需要外层循环提供变量然后内循环一个轮回,
                                                                       // 才能把外层循环提供的变量跟全体相比找到合适的位置,
                                                                      // 然外层变量就是数组的循环,内层也一样,所以就能理解为,
                                                                     // 数组中的一个变量跟数组中的所有变量比较排序。)
                    a[i]=a[j];
                    a[j]=t;
                }
             }
            }for (int i=0;i<a.length;i++){//..............................循环输出外层
                                                                    // (已经排列好,是经过内层循环比较排列好的外层循环数组)的数组;
            System.out.print(a[i]+"\t");
        }



     //数组求最大值(循环,if判断比较和代替,一样采用中间变量max);
     //数组求最小值同理  (依然采用上面的数组);
        int max=a[0];//..............................假定一个中间变量并赋值其一个数组中的任意一个变量;
        for (int i=0;i<a.length;i++){//..............循环整个数组;
            if (a[i]<max){//.........................使数组中的所有变量和假定中间变量比较;
                max=a[i];//..........................通过if筛选则使假定中间变量代替通过的数组变量;
            }
        }
        System.out.println(max);//...................输出最终的假定中间变量;




        //输入任意数组,添加新的数,占位,总体重新排列;
        Scanner s=new Scanner(System.in);
        int c=0;//................................................输入数字所占位置下标;
//        int a[]={1,3,4,5,6,0};
        int a[]=new int[5];//.....................................定义一个动态数组;
        for (int i=0;i<a.length-1;i++){//.........................设置数组赋值和数量;
            System.out.println("请输入第"+(i+1)+"个数:");
            int b=s.nextInt();
            a[i]=b;
            continue;//...........................................循环输入整个数组;
        }
        System.out.print("请输入要插入的数:");//.................插入一个数;
        int d=s.nextInt();
        for (int i=0;i<a.length;i++){//...........................插入的数和数组每项比较获取本数组的下标
                                                             // (数组降序if(输入>a[i]);数组升序if(输入<a[i]))
            if (d<a[i]){
                c=i;
                break;//..........................................找到输入数字占本数组位置的下标,结束本循环;
            }
        }for (int i=a.length-1;i>=c+1;i--){//.....................根据找到的属于输入的下标,从其后一位开始往后移一位;
                                                               // 因为被覆盖的工具0在数组最后,所以从0开始循环减一位;
                                                                //前一位覆盖0的位置,依次类推到输入位置;这个时候还未加入输入数据,
                                                               // 而是把它位置腾出来了,显示结果为有两个相同的数字,因为向后覆盖了,
                                                               // 而最前面的多出来的数字就是输入的位置;
            a[i]=a[i-1];//........................................向后进1 关系式;
        }a[c]=d;//................................................将输入带入数组,覆盖重复的数位;
        Arrays.sort(a);
        System.out.println("输入数字排列下标为:"+c);
        System.out.print("重新排列顺序为:");
        for (int i=0;i<a.length;i++){
            System.out.print(a[i]+"\t");
        }//........................................................数组到此结束;
        

2020年5月25日


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值