Java SE: 数组、排序和查找

食用前说明:

本文章内容来自B站韩顺平老师的课堂笔记,本人只是将其进行自我整理,内容有所删减,韩顺平老师的B站课程AV号:BV1fh411y7R8

本文章内容来自韩顺平老师的课堂笔记的第6章数组、排序和查找,内容暂时省略二维数组相关内容。

想进一步了解二维数组的话,直接跳转:

二维数组直达,加练习题讲解

6.1 数组介绍

  • 可存放多个同一类型的数据。数组也是一种数据类型,是引用类型。

6.2 数组的使用

6.2.1 使用方式 1 -静态初始化

  • 初始化数组时,给定了固定的数组大小(即:数组的长度)

  • 案例演示

     // 法一
     double[] scores = new double[5];
     // 法二
     double scores[] = new double[5];

6.2.2 使用方式 2 -动态初始化

  • 初始化后,没有给定数组大小

  • 案例演示

    // 法一
     double[] scores;
     // 法二
     double scores[];

6.3 数组使用注意事项和细节

  1. 数组中的元素可以是任何数据类型,但不能混用。

  2. 数组创建后,如果没有赋值,会有默认值,下表就是数值类型对应的默认值:

    数据类型默认值
    int , short , byte , long0
    float ,double0.0
    char\u0000
    booleanfalse
    Stringnull
  3. 使用数组的步骤

    1. 声明数组并开辟空间

    2. 给数组各个元素赋值

    3. 使用数组

  4. 数组的下标从 0 开始

  5. 数组下标必须在指定范围内使用,否则报:下标越界异常,

    • 案例说明

      int [] arr=new int[5]; //则有效下标为 0-4
  6. 引用类型数组,数组型数据是对象

6.4 数组应用案例

 /*
     创建一个 char 类型的 26 个元素的数组,分别 放置'A'-'Z'。
     使用 for 循环访问所有元素并打印出来。
     提示:char 类型数据运算 'A'+1 -> 'B' 思路分析
     1. 定义一个 数组 char[] chars = new char[26]
     2. 因为 'A' + 1 = 'B' 类推,所以老师使用 for 来赋值
     3. 使用 for 循环访问所有元素
 */
 public class ArrayExercise01 {
     //编写一个 main 方法
     public static void main(String[] args) {
         char[] chars = new char[26];
         for( int i = 0; i < chars.length; i++) {//循环 26 次
             //chars 是 char[]
             //chars[i] 是 char
             chars[i] = (char)('A' + i); //'A' + i 是 int , 需要强制转换
         }
         //循环输出
         System.out.println("===chars 数组===");
         for( int i = 0; i < chars.length; i++) {//循环 26 次
             System.out.print(chars[i] + " ");
         }
     }
 }
  • 运行结果

 ===chars 数组===
 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 

6.5 排序的介绍

  • 将数据(数组)按指定的规则,进行排列

6.6 冒泡排序法

  • 基本思想:

    通过对排序序列从后向前(从下标较大的元素开始),依次比较相邻元素 的值的大小,决定是否交换,使值较大的元素逐渐从前移向后挪动,就象水底下的气泡一样逐渐向上冒。

  • 案例演示

     //冒泡排序算法
     //声明数组,并给定数值
     int[] numbers = new int[]{1,5,8,2,3,9,4};
     //需进行length-1次冒泡
     for (int i = 0; i < numbers.length - 1; i++){
         for (int j = 0; j < numbers.length - 1 - i; j++){
             if (numbers[j] > numbers[j + 1]){
                 int temp  = numbers[j];
                 numbers[j] = numbers[j + 1];
                 numbers[j + 1] = temp;
             }
         }
     }
     System.out.println("从小到大排序后的结果是:");
     for(int i = 0; i < numbers.length; i++)
         System.out.print(numbers[i] + " ");//打印排序后的结果
  • 运行结果

     从小到大排序后的结果是:
     1 2 3 4 5 8 9 

6.12 查找

6.12.1 介绍

  • java 中,常用的查找有两种:

    1. 顺序查找 

    2. 二分查找

6.12.2 顺序查找

 public static void main(String[] args) {
     //定义一个字符串数组
     String[] names = {"北京", "上海", "广州", "深圳"};
     Scanner myScanner = new Scanner(System.in);
     System.out.println("请输入四大一线城市:");
     String findName = myScanner.next();
     //遍历数组,逐一比较,如果有,则提示信息,并退出
     int index = -1;//插一个为'负数的旗'
     for(int i = 0; i < names.length; i++) {
     //比较 字符串比较 equals, 如果要找到名字就是当前元素
         if(findName.equals(names[i])) {
             System.out.println("恭喜你找到 " + findName);
             System.out.println("下标为= " + i);
             //把 i 保存到 index
             index = i;//找到了更换'旗'
             break;//退出
         }
     }
     if(index == -1) { //根据判断是否换'旗',判断有无找到
         System.out.println("sorry ,你输入的不属于四大一线城市 " + findName);
     }
 }
  • 运行结果

====效果1====== 
请输入四大一线城市:
 深圳
 恭喜你找到 深圳
 下标为= 3
 ​
 ====效果2======
 请输入四大一线城市:
 东莞
 sorry ,你输入的不属于四大一线城市 东莞
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值