JAVA 数组排序和查找

数组
  • 介绍

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

  • 案例介绍

Array01.java

  • 使用方法1-动态初始化

数组的定义:

数据类型[] 数组名 = {数据1, 数据2};

数据类型 数组名[] = new 数据类型[大小];

int a[] = new int[5];

数组的引用:

数组名[下标/索引] 比如取出a数组中的第三个数 a[2]

  • 使用方法2-动态初始化

  1. 先声明数组

语法:数据类型 数组名[]; 也可以 数据类型[] 数组名;

int a[]; 或 int[] a;

  1. 创建数组

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

a = new int[10];

Array02.java

  • 使用方法3-静态初始化

初始化数组

语法:数据类型 数组名[] = {元素1, 元素2…}

int a[] = {2, 3, 4,2, 10},如果知道数组有多少元素,具体值。

  • 细节

  1. 数组是多个相同类型数据的组合,实现对这些数据的统一管理

  1. 数组中的元素可以是任何数据类型,包括基本类型和引用类型,但是不能混用

  1. 数组创建后,如果没有赋值,有默认值。int 0,short 0,byte 0,long 0,float 0.0f,double 0.0,char \o0000,boolean false,String null

  1. 使用数组的步骤1.声明数组并开辟空间;2.给数组各个元素赋值;3.使用数组

  1. 数组的下标是从零开始的。

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

  1. 数组属于引用类型,数组型数据是对象

  • 应用案例

创建一个char类型的26元素的数组,分别放置A-Z,使用for循环打印

ArrayExercise.java

  • 数组赋值机制

基本数据类型赋值,这个值就是具体的数据,而且相互不影响

数组在默认情况下是引用传递,赋的是地址

ArrayAssign.java

  • 数组拷贝

将arr1拷贝到arr2,两者相互独立

ArrayCopy.java

  • 数组反转

把最后的元素放在最前

ArrayReverse.java

  • 数组添加

原始数组使用静态分配

增加的元素直接放在数组最后

方法:

定义一个新数组,int[] arrNew = new int[arr.length + 1];

遍历arr数组,依次拷贝到arrNew中

将值赋给arrNew[arr.length - 1],也就是arrNew最后一个元素

让arr指向arrNew,arr = arrNew;

数组扩容十分麻烦,消耗大量的内存

ArrayAdd.java

  • 练习

数组缩减,每次缩减最后一个数据,当只剩下最后一个的时候,提示不能缩减

排序
  • 介绍

将多个数据以指定的顺序进行排列的过程

  • 排序的分类

内部排序

指将要处理的所有数据都加载到内部存储器中进行排序。包括(交换排序、选择排序、插入排序)

外部排序

数据量过大,无法全部加载到内存中,需要借助外部存储进行排序。包括(合并排序法和直接合并排序法)

  • 冒泡排序

通过对待排序序列从后向前,依次比较相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前移向后部,就像水底下的气泡一样逐渐向上冒

  • 案例

BubbleSort.java

  • 冒泡排序特点

  1. 假设有五个元素,一共会进行四轮排序,可以看成是外层循环。

  1. 每一轮排序可以确定一个数的位置,比如第一轮排序确定最大数,第二轮排序确定第二大的数,以此类推。

  1. 当进行比较时,如果前面的数大于后面的数,就交换。

  1. 每轮比较次数在减少

查找
  • 介绍

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

顺序查找

二分查找

  • 案例演示

SeqSearch.java

多维数组
  • 介绍

从定义上看, int[][]

原来的一维数组的每个元素是一维数组,就构成二维数组

需要两次遍历才能遍历到具体数据

要访问地i+1个一维数组的第j+1个值 arr[i][j]

TwoDimensionalArray01.java

  • 使用方式1-动态初始化

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

int a[][] new int[2][3]

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

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

再定义:数组名 = new 类型[大小][大小];

赋值

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

代码: TwoDimensionalArray02.java

  • 示意图

  • 使用方法4-静态初始化

定义:类型 数组名[][] = {{值1, 值2…},{值1, 值2…},{值1, 值2…}}

  • 练习

YangHui.java

  • 细节

二维数组声明方式有:

int[][]或者int[] y[]或者 int y[][]

二维数组实际上是由多个一维数组组成的,它的各个一维数组长度可以相同,也可以不同

int map[][] = {{1, 2}, {3, 4, 5}}

由map[0] 是一个含有两个元素的一维数组,map[1]是一个含有三个元素的一维数组构成,我们也称之为列数不等的二维数组。

  • 练习

Homework04.java

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值