【数组】

1.1 数组概述

数组的概念:用来保存一组具有相同数据类型的数据的一种存储结构。

注意:数组也是一种数据类型,数组类型,属于引用数据类型

数组的定义语法:

1、 数据类型[ ] 数组名=new 数据类型[数组中存储数据个数];-----推荐使用该语法

2、 数据类型 数组名[ ]=new 数据类型[数组中存储数据个数];

3、 数据类型[] 数组名={值1,值2,…值n};

4、 数据类型[] 数组名=new 数据类型[]{值1,值2,…值n};

1.2 数组元素的打印

1、求数组最大值

需求说明:使用数组和循环获取5位学员的成绩,使用int max变量存储最大值。以“打擂台”的思路使用循环求出数组的最大值

Public class Demo1{
    Public static void main(String[] args){
int[] scores=new int[5];
        Scanner input = new Scanner(System.in);
        System.out.println("请输入五个学员的成绩:");
        for (int i = 0; i < scores.length; i++) {
            scores[i]=input.nextInt();
        }
        //在数组找出最大的成绩,第几个学生成绩最高
        int max=scores[0];//默认第一个学生成绩最高
        int idx=0;//保存最高分同学所在的位置
        for (int i = 1; i < scores.length; i++) {
            if(max<scores[i]){
                max=scores[i];
                idx=i;
            }
        }
        System.out.println("第"+(idx+1)+"位同学成绩最高,分数是:"+max);
}}

2、向数组中插入一个元素

(1)将成绩保存在数组中;

(2)通过比较找到插入位置;

(3)该位置元素往后移一位;

(4)插入新成绩;

 

思路:1、要添加新成绩的数组必须是有序

​ 2、查找新添加元素的插入位置

​ 3、将位置腾出来

​ 4、腾出来的位置放入新元素

Public class Demo1{
    Public static void main(String[] args){
//直接存入有序的数据 长度4,最大的下标3
        int[] scores_old={34,67,98,100};
        //向scores数组中添加一个新成绩
        int newScore=88;
        //数组特征:长度固定,不能超过数组声明长度
        //复制数组
        int[] scores_new = Arrays.copyOf(scores_old, scores_old.length+1);
        /*int[] scores_new=new int[scores_old.length+1];
        
        
        for (int i = 0; i < scores_old.length; i++) {
            scores_new[i]=scores_old[i];
        }*/
        
        //1.查找插入的合适的位置,比如保证原数组升序不变
        int idx=scores_new.length-1;//保存要添加元素的下标
        for (int i = 0; i < scores_new.length; i++) {
            if(newScore <scores_new[i]){
                idx=i;
                break;
            }
        }
        //挪动后面的元素
        for (int i = scores_new.length-1-1; i >=idx ; i--) {
            scores_new[i+1]=scores_new[i];
        }
        //在指定位置放入新成绩
        scores_new[idx]=newScore;
        
        System.out.println("插入新元素后的数据结果");
        for (int i = 0; i < scores_new.length; i++) {
            System.out.print(scores_new[i]+"\t");
        }
}
}

3、获取最低价手机价格

需求说明:按照如下步骤:

(1)定义数组存储价格,并利用循环输入;

(2)定义变量min保存当前的最低价;

(3)将min和数组中的其余元素依次比较;

 

Public class Demo1{
    Public static void main(String[] args){
int[] scores=new int[5];
        Scanner input = new Scanner(System.in);
        System.out.println("请输入4家店的价格:");
        for (int i = 0; i < scores.length; i++) {
            scores[i]=input.nextInt();
        }
        //在数组找出最低价格
        int min=scores[0];//默认第一个价格最低
        int idx=0;//保存最低价格所在的位置
        for (int i = 1; i < scores.length; i++) {
            if(max<scores[i]){
                max=scores[i];
                idx=i;
            }
        }
        System.out.println("第"+(idx+1)+"家店的最低,价格是:"+max);
}
}

4、冒泡排序

需求说明:冒泡排序时注意以下关键点:

(1)5个数字如何存放:(数组,数组.length = 5)

(2)控制比较多少轮:(外层循环,循环变量 i)

(3)控制每轮比较多少次:(内层循环,循环变量 j)

(4)交换数据;

 

Public class Demo1{
    Public static void main(String[] args){
int[] scores=new int[5];
        Scanner input = new Scanner(System.in);
        System.out.println("请输入五个学员的成绩:");
        for (int i = 0; i < scores.length; i++) {
            scores[i]=input.nextInt();
        }
        
        System.out.println("排序前的成绩:");
        for (int i = 0; i < scores.length; i++) {
            System.out.print(scores[i]+"\t");
        }
        //排序(冒泡排序)
        //原理:
        for (int i = 0; i < scores.length-1; i++) {
            for (int j = 0; j < scores.length-1-i; j++) {
                if(scores[j] > scores[j+1]){
                    int temp =scores[j];
                    scores[j]=scores[j+1];
                    scores[j+1]=temp;
                }
            }
        }
        System.out.println();
        System.out.println("排序后");
        for (int i = 0; i < scores.length; i++) {
            System.out.print(scores[i]+"\t");
        }
}
}
//方法2
public  static  void  equalNum(){
        int[] nums=new int[]{76,36,234,12,120,100};
        System.out.println("排序前的数组为:");
        for (int i=0;i<nums.length;i++){
            System.out.print(nums[i]+"\t");
        }
        System.out.println();
        for (int i=0;i<nums.length-1;i++){//控制比较的轮数
              //j=0; -->(j+i=长度-1)
            for (int j=i;j<nums.length-1;j++){ //内层循环才是 每轮真正的比较
               if (nums[i]>nums[j+1]){
                   int temp=nums[i];
                   nums[i]=nums[j+1];
                   nums[j+1]=temp;
               }
            }
        }
        System.out.println("排序后的数组为:");
        for (int i=0;i<nums.length;i++){
            System.out.print(nums[i]+"\t");
        }
    }

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值