数组简介(包含冒泡排序)

数组简介(包含冒泡排序),第1张

数组是变量,是存储相同数据类型的一组数据

声明一个变量就是在内存空间划出一块合适的空间

声明一个数组就是在内存空间划出一串连续的空间 

一、数组四要素:数组名称(标识符),数组元素,元素类型,元素下标(从0开始)

注意:数组一经创建,长度不可变,元素类型不可变(一个数组的元素必须属于同一类型)

二、创建并调用数组

1. 新建数组

double[] scores;   // double scores[]; 的写法也是可以的,根据自己习惯选择

//声明数组时不规定数组长度

2. 分配空间

scores = new double[5];

//1、2两步可以合并:
double[] scores = new double[5];

3. 给数组内元素赋值

scores[0] = 70;
scores[1] = 80;
scores[3] = 92;

/* 数组创建的时候,赋值前,每个元素就有默认值/初始值:
*  int默认0,double默认0.0,string默认null,char默认空字符(即"")
*/

//1、2、3三步也可以合并,下面两个写法均可
double[] scores = {70,80,0,92,0};
double[] scores = new double[]{70,80,0,92,0};   //这种方式不能指定数组长度

//给数组赋值还可以利用扫描器和循环,动态输入信息并赋值
Scanner input = new Scanner(System.in);
for(int i=0;i

4. 调用内存

// for 循环遍历数组
for(int i = 0;i < 5;i++) {
    System.out.println(scores[i]);
}

//增强 for 循环遍历数组
for(double s : scores){
    System.out.println(s);
}

三、数组应用实例

1. 猜数游戏

Scanner input = new Scanner(System.in);
int[] nums = {8,4,2,1,23,344,12};
int sum = 0;
boolean flag = false;
System.out.print("请输入一个数:");
int num = input.nextInt(); 
for(int i = 0;i < nums.length;i++) {
    System.out.print(nums[i] + "  ");
    sum += nums[i];
    if(num == nums[i])
        flag = true;
}
System.out.println();
System.out.println("数列中所有数值的和为:" + sum);

//三元表达式可以一步输出数列中是否包含输入的数字
System.out.println(flag ? "数列中包含输入的数字":"数列中不包含输入的数字");

2. 利用数组找出最大值

Scanner input = new Scanner(System.in);
double[] score = new double[5];
double max;
//给max赋值,确保max从目标数组内找出
System.out.print("请输入第1位学生的考试成绩:");
max = input.nextDouble();
for(int i = 1;i < 5;i++) {
    System.out.print("请输入第" + (i+1) + "位学生的考试成绩:");
    score[i] = input.nextDouble();
    max = Math.max(max, score[i]);
}
System.out.println("本次考试最高分是:" + max);

3. 数列中插入一个数,保持降序

Scanner input = new Scanner(System.in);
//创建原始数组
int[] numbers = new int[6];
numbers[0] = 99;
numbers[1] = 85;
numbers[2] = 82;
numbers[3] = 63;
numbers[4] = 60;
//输入要插入的数
System.out.print("请输入新增成绩:");
int newScore = input.nextInt();
//1.找到要插入的位置,创建下标
int index = 0; 
for(int i = 0;i < numbers.length;i++) {
    if(numbers[i] > newScore) {
        index++;
    }
}
//2.数组后移
for(int i = numbers.length-1;i > index;i--) {
    numbers[i] = numbers[i-1];
}
//3.插入新数据
numbers[index] = newScore;
//打印插入数据后的数组
System.out.println("插入新成绩后的数组为:");
for(int i = 0;i < numbers.length;i++) {
    System.out.print(numbers[i] + "  ");
}

四、冒泡排序

从[0],[1]开始,相邻的元素两两比较,较大的(或较小的)往后换,从而达到从最后一个开始往前,数值越来越小(大)的结果

//已知数组需要进行升序排列
int[] number = {23,45,67,66,4,2,75,43,656,-23};
int temp;      //创建临时变量,方便相邻元素比较后进行数值交换
//外部循环表示比较的轮数
for(int i = 1;i < number.length;i++) {
    //内部循环表示每轮比较的次数
    for(int j = 0;j < number.length - i;j++) {
        //如果相邻元素中数值较大的靠前,则交换数值
        if(number[j]>number[j+1]) {
            temp = number[j];
            number[j] = number[j+1];
            number[j+1] = temp;
        }
    }
}
//排序后打印
for(int i = 0;i < number.length;i++) {
    System.out.print(number[i] + "  ");
}

五、java工具类之 Arrays类

Arrays类的一些常用方法:

  • boolean equals(array1,array2)=======比较array1和array2两个数组是否相等
  • sort(array)=======对数组array的元素进行升序排列
  • String toString(array)=======将一个数组array转换成一个字符串
  • void fill(array,val)=======把数组array所有元素都赋值为val
  • copyOf(array,length)=======把数组array复制成一个长度为length的新数组,返回类型与复制的数组一致
  • int binarySearch(array, val)=======查询元素值val在数组array中的下标(要求数组中元素已经按升序排列)

六、多维数组(二维数组)

二维数组实际上是一个以一维数组做为元素的一维数组

1. 创建数组

// scores 是一个长度为5的数组,其中每一个元素又是一个长度为10的数组

int [][] scores;   //定义二维数组(和一维数组一样,int scores [][]; 的写法也是可以的,自由选择)
scores = new int[5][10];  //分配内存空间

int[][] scores = new int[5][10];   //定义数组的同时分配空间
//这里的10可以不定义,但外维数组的长度必须定义,即 int[][] scores = new int[5][]; 也是可以的

2. 赋值及调用

scores[0][2] = 7;       //这里表示将7赋值给scores数组的第一个元素数组的第3个元素
System.out.println(scores[0][2]);

3.创建数组的同时赋值

int[][] scores = new int[][] {{50,76,97},{24,5,34,65,67,45,34},{65,76,68,35,47,34,87},{0,25,77,6},{2,4,5,6,433}};
int[][] scores = {{50,76,97,45,46,22,7},{43,24,5,34,65,67,45,34},{65,76,68,35,47,34,87}};

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1353982.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-14
下一篇2022-06-14

发表评论

登录后才能评论

评论列表(0条)