目录

一、冒泡排序

第一步:思路

第二步:代码实现

二、查找

用到的知识

二维数组

通俗理解:

代码:

总结:

二维数组使用方式

使用方式1:动态初始化

二维数组在内存中的存在形式(重要!)

使用方式2:动态初始化

使用方式3:动态初始化-列数不确定

代码:

使用方式4:静态初始化

二维数组练习

杨辉三角

规律总结:

代码:

二维数组使用细节和注意事项

二维数组课堂练习


一、冒泡排序

冒泡排序(Bubble Sorting)

例子:24,69,80,57,13 使用冒泡排序法将其排成一个从小到大的有序数列

第一步:思路

冒泡排序特点总结:

1.一共有5个元素

2.一共进行了4轮排序,可以看成是外层循环

3.每一轮排序确定一个数据的位置,第一轮确定最大数,第二轮排序确定第二大的数,以此类推

4.当进行比较时,如果前面的数大于后面的数,就交换(从小到大)

5.每一轮的比较次数在逐渐减少 4->3->2->1

第二步:代码实现

第一轮排序代码

public class BubbleSort{//编写一个main方法public static void main(String[] args){//化繁为简,先死后活int[] arr = {24,69,80,57,13};//第一轮有四次比较int temp = 0;for(int j = 0; j < 4; j++){//如果前面的数大于后面的数,交换两者位置if(arr[j] > arr[j+1]){temp = arr[j+1];arr[j+1] = arr[j];arr[j] = temp;}}System.out.println("第一轮排序后====");//遍历数组for(int j = 0; j < arr.length; j++){System.out.print(arr[j] + "\t");}}
}

第二轮代码和第一轮一样,只需更改循环次数即可

进一步精简:4轮排序可以作为一个外循环

内部循环只有每一轮循环的次数不同

i=0时,循环4次

i=1时,循环3次

i=2时,循环2次

i=3时,循环1次

public class BubbleSort{//编写一个main方法public static void main(String[] args){//下面我们举一个具体的案例来说明冒泡法。//我们将五个无序:24,69,80,57,13 使用冒泡排序法将其排成一个从小到大的有序数列//依次比较,一共四轮比较//第一轮进行四次,第二轮3次int arr[] = {24, 69, 80, 57, 13};for(int j = 0; j < arr.length - 1; j++){int temp = 0;for(int i = 0; i < arr.length - 1 - j; i++){if(arr[i] > arr[i + 1]){temp = arr[i];arr[i] = arr[i + 1];arr[i + 1] = temp;}}System.out.println("\n=======第" + (j + 1) + "轮排序的结果为====");for(int i = 0; i < arr.length; i++){System.out.print(arr[i] + "\t");}}}
}

二、查找

代码

/*
1) 有一个数列:白眉鹰王、金毛狮王、紫衫龙王、青翼蝠王猜数游戏:
从键盘中任意输入一个名称,判断数列中是否包含此名称
【顺序查找】 要求: 如果找到了,就提示找到,并给出下标值*/
import java.util.Scanner;public class SeqSearch{public static void main(String[] args){String names[] = {"白眉鹰王", "金毛狮王", "紫衫龙王", "青翼蝠王"};System.out.println("请输入要查找的名字");Scanner myScanner = new Scanner(System.in);String findName = myScanner.next();int index = -1;//经典编程思想for(int i = 0; i < names.length; i++){if(names[i].equals(findName)){//字符串的比较System.out.println("恭喜你,已经找到" + findName);index = i;System.out.println("下标为" + index);break;}}if(index == -1){//当执行此语句时,说明上述循环的if分支中的index = i;//没有被执行,即数组内没有输入的名字System.out.println("此数组内没有" + findName);}}
}

用到的知识

字符串比较:equals的用法 findName.equals(name[i]);

经典编程技巧 :  index = -1;设置一个变量,如果匹配成功将下标赋给此变量,如果如果index = -1仍然成立,说明遍历过后匹配不成功

二维数组

通俗理解:

定义形式:int[][]

一个一维数组的元素本身又是一个一维数组,就这样构成了二维数组

代码:

public class TwoDimensionalArray01{public static void main(String[] args){/*请用二维数组输出如下图形0 0 0 0 0 00 0 1 0 0 00 2 0 3 0 00 0 0 0 0 0*/int[][] arr = { {0, 0, 0, 0, 0, 0},{0, 0, 1, 0, 0, 0}, {0, 2, 0, 3, 0, 0},{0, 0, 0, 0, 0, 0}};System.out.println("该二维数组的元素个数为" + arr.length);System.out.println("该二维数组的第三行第四元素个数为" + arr[2][3]);//数组下标是从零开始的for(int i = 0; i < arr.length; i++){for(int j = 0; j < arr[i].length; j++){System.out.print(arr[i][j] + " ");}System.out.print("\n");}         }
}

总结:

arr[3][3]表示第4个一维数组的第4的元素的值,即0,因为数组的下标是从0开始的

arr[i]表示数组的第i个一维数组,arr[i].length表示第i个一维数组的长度

二维数组使用方式

使用方式1:动态初始化

语法: 类型[][] 数组名=new 类型[大小][大小]

2) 比如: int a[][]=new int[2][3](一个二维数组内有两个一维数组,每个一维数组内有3个元素)

代码:

public class TwoDimensionalArray02{public static void main(String[] args){int[][] arr = new int[2][3];arr[0][2] = 8;//第1个一位数组的第3个元素为8arr[1][1] = 5;//第2个一维数组的第2个元素为5//遍历二维数组for(int i = 0; i < arr.length; i++){//遍历二维数组内的一维数组for(int j = 0; j < arr[i].length; j++){System.out.print(arr[i][j] + " ");//int型变量默认值为0}System.out.print("\n");}}
}

二维数组在内存中的存在形式(重要!)

使用方式2:动态初始化

先声明:类型 数组名[][];

再定义(开辟空间) 数组名 = new 类型[大小][大小]

赋值(有默认值,比如 int 类型的就是 0)

eg:int arr[][];
        arr = new int[2][3];

使用方式3:动态初始化-列数不确定

要求:打印出以上数组

题目分析:一个二维数组,有三个一维数组,但是每个一维数组内元素的数量是不同的,第一个一维数组内有一个元素,第二个有两个元素,第三个有三个元素

代码:

public class TwoDimensionalArray03{public static void main(String[] args){int arr[][];arr = new int[3][];//不确定每个一维数组内有几个元素for(int i = 0; i < arr.length; i++){//给每个一维数组开辟一个新的空间//arr[0]内有1个元素,arr[1]有两个元素,arr[2]有3个元素arr[i] = new int[i + 1];//如果没有这一步,arr[i]就是nullfor(int j = 0; j < arr[i].length; j++){//arr[0]内的一个元素的值为1;arr[1]内两个元素的值为2,arr[2]内三个元素的值为3arr[i][j] = i + 1;System.out.print(arr[i][j] + " ");}System.out.print("\n");}}
}

使用方式4:静态初始化

int[][] arr = {{1,1,1}, {8,8,9}, {100}};

解读:1)二维数组arr内有3个元素,即3个一维数组;2)第一个一维数组有3个元素,分别为1,1,1;第二个一维数组有3个元素,分别为8,8,9;第三个一维数组有1个元素,值为100;

二维数组练习

第一题:int arr[][]={{4,6},{1,4,5,7},{-2}}; 遍历该二维数组,并得到和

代码

/*int arr[][]={{4,6},{1,4,5,7},{-2}};
遍历该二维数组,并得到和
*/
public class TwoDimensionalArray05{public static void main(String[] args){int arr[][]={{4,6},{1,4,5,7},{-2}};int sum = 0;for(int i = 0; i < arr.length; i++){for(int j = 0; j < arr[i].length; j++){System.out.print(arr[i][j] + " ");//一轮小循环累计一个一维数组内元素的和,大循环结束后累计为二维数组的和sum += arr[i][j];}System.out.print("\n");}System.out.print("此数组的和为" + sum);}
}

杨辉三角

杨辉三角的形式

1

1 1

1 2 1

1 3  3  1

1 4  6  4  1

1 5 10 10 1

以此类推

规律总结:

1)第n行有n个元素()

2)第一个数字和最后一个数字都是1

3)第三行开始除了首个元素和最后一个元素之外的值的规律:arr[i][j]=arr[i-1][j] +arr[i-1][j-1]

以上三条是打印出杨辉三角的重要条件

代码:

//打印10行杨辉三角
public class YangHui{public static void main(String[] args){//杨辉三角的规律//1)第n行有n个元素()//2)第一个数字和最后一个数字都是1//3)第三行开始除了首个元素和最后一个元素之外的值的规律//:arr[i][j]=arr[i-1][j] +arr[i-1]int yangHui[][] = new int[10][];for(int i = 0; i < yangHui.length; i++){//给每一个一维数组开创空间yangHui[i] = new int[i + 1];for(int j = 0; j < yangHui[i].length; j++){//每一个一维数组的第一个元素和最后一个元素的值为1if(j == 0 || j == yangHui[i].length - 1){//最后一个元素的下标值为数组长度-1yangHui[i][j] = 1;}else{//首尾意外元素的值yangHui[i][j] = yangHui[i-1][j] + yangHui[i-1][j-1];}}}//循环遍历输出for(int i = 0; i < yangHui.length; i++){for(int j = 0; j < yangHui[i].length; j++){System.out.print(yangHui[i][j] + " ");}System.out.print("\n"); }}
}

二维数组使用细节和注意事项

1)二维数组的声明方式有: int[][] y 或者 int[] y[] 或者 int y[][]

2)二维数组实际上是由多个一维数组组成的,它的各个一维数组的长度可以相同,也可以不相同(不相同的为列数不相等的二维数组)。

二维数组课堂练习

题目:

声明:int[] x,y[];以下选项能够通过编译的是()
        int[] x,y[] 即int[] x;int[] y[]; 其中int[]作用于x和y[]
        由此得出x是一维数组,y是二维数组

a) x[0] = y;       //将二维数组赋值给一维数组内的一个元素 int[][] -> int
       b)y[0] = x;        //y是二维数组,y[0]是一维数组,x也是一维数组,此语句正确
       c) y[0][0] = x;     //int[] -> int 错误
       d) x[0][0] = y;     //x是二维数组,不存在x[0][0]
        e)y[0][0] = x[0];  //都是数组内的元素
        f) x = y;             //int[][] -> int[]错误

Java学习第二十四天相关推荐

  1. JavaScript高级程序设计第四版学习--第二十四章

    title: JavaScript高级程序设计第四版学习–第二十四章 date: 2021-5-31 10:46:01 author: Xilong88 tags: JavaScript 本章内容: ...

  2. 游戏策划学习第二十四天

    游戏策划学习第二十四天 5/23 5.社交:社交影响与关联性 6.稀缺:稀缺性与渴望 7.未知:未知性与好奇心 8.亏损:亏损与逃避心 最近在玩百闻牌,那就用百闻牌来思考这四项内容. 5.社交并不只是 ...

  3. JAVA学习第十四课(接口:implements及其基本应用)

    接口: 我们知道抽象类中可以定义抽象方法,也可以定义非抽象方法,当一个抽象类中的方法都是抽象方法的时候,我们就可以定义另一种表现方式:接口(interface),所以接口是一种特殊的抽象类 接口的出现 ...

  4. Java学习第二十六天

    目录 成员方法 一.方法快速入门 二.方法的调用机制原理(重要) 三.方法的优点 四.成员方法的定义 五.注意事项和使用细节 第一部分:访问修饰符 第二部分:返回数据类型的细节 三.形参列表 四.方法 ...

  5. java学习第二十五天

    目录 目录 类与对象 一.引出 二.概述和快速入门 类与对象关系示意图 例子 编译错误记录 三.对象在内存中的存在形式 四.属性/成员变量的注意事项和细节说明 五.如何创建对象 六.如何访问属性 七. ...

  6. 千锋逆战班学习第二十四天

    千锋逆战班 在千锋"逆战"学习第24天, 每个人生阶段都需要努力去扮好自己的角色,越努力越轻松,越坚强越幸运! 加油! 1(Object类)有下面代码 interface IA{v ...

  7. Java学习系列(十四)Java面向对象之细谈线程、线程通信(上)

    线程与进程的关系: 进程 --运行中的程序.进程有如下特征: 1).独立性.拥有自己的资源,拥有自己独立的内存区. 通常来说,一个进程的内存空间,是不允许其他进程访问的. 但像Windows,如A进程 ...

  8. 第二十三篇 -- 学习第二十四天打卡20190715

    看标题才发现漏了几天没上传--! 学习书籍<剑桥商务英语中级词汇精选>乱序版 Day04 Day22endeavour [ɪn'devə(r)] n./vi.努力,尽力搭:endeavou ...

  9. 重学java基础第二十四课:标识符合关键字

最新文章

  1. 在python中使用关键字define定义函数_python自定义函数def的应用详解
  2. No module named 'StringIO'
  3. jquery在ie浏览器下中文乱码的问题
  4. Linux内核 获取本机mac,Linux获取本机MAC地址
  5. 怎么调节手机的刷新率_二分钟科普:手机上的“高刷新率”
  6. python用牛顿迭代法求平方根_Python编程实现二分法和牛顿迭代法求平方根代码
  7. python实现决策树归纳_决策树【python实现】
  8. 三分钟掌握Go mod常用与高级操作
  9. Ecere SDK:用于GUI和图形的跨平台工具包
  10. Illustrator 教程,如何在 Illustrator 中编组内容?
  11. Linux忘记密码了怎么修改密码(保姆级教程)
  12. 基于PHP实现高性能敏感词过滤算法
  13. Windows系统electron集成flash播放器(.swf文件在electron中Vue页面中播放)
  14. Android 微信登陆的坑
  15. Unable to instantiate service com.baidu.android.pushservice.PushService: java.lang.ClassNotFoundExc
  16. python精通要数学好_深度学习需要多强的数学基础?
  17. 三角形周长最短问题_什么样的三角形周长最短
  18. poscms统计数据调用
  19. 获取公众号的关注链接
  20. GitHub星数1.3W!五分钟带你搞定Bash脚本使用技巧

热门文章

  1. 计算机专业面试 英文,计算机专业面试英文自我介绍
  2. uni-app基础知识
  3. 使用IntelliJ Idea新建SpringBoot项目
  4. 一个SQL tvp+.net的例子
  5. WIN7/WIN10/WIN11系统下触屏软键盘无法跟随跳出,桌面模式无法自动弹出(随动键盘)
  6. php todo和其他备注,帮助 | 高效ToDo
  7. 干货!____UI设计中那些创意的图标怎么做
  8. RabbitMQ入门篇、介绍RabbitMQ常用的五种模式
  9. ctab法提取dna流程图_CTAB法提取DNA
  10. 深入探索Android内存优化