二维数组,异常,排序

二维数组

  1. 数组中存放的是数组

  2. 声明方式

  1. 数据类型[][] 数组名 ; --推荐使用这种声明方式

  2. 数据类型[] 数组名[] ;

  3. 数据类型 数组名[][];

初始化

  1. 数据类型[][] 数组名=new
    数据类型[一维数组的长度][二维数组的长度];

  2. 数据类型[][] 数组名=new 数据类型[一维数组的长度][];

  3. 数据类型[][] 数组名=new 数据类型[][]{{1,2,3},{4,5},{6}…};

  4. 数据类型[][] 数组名={{1,2,3},{4,5},{6}…};

遍历二维数组的方式

双重for循环(可以普通for,可以是增强for)

在这里插入图片描述

常见的两个异常

ArrayIndexOutOfBoundsException 数组索引越界异常

  1. 索引超过最大值

  2. 索引为负数

NullPointerException 空指针异常

  1. 引用值为null

数组的排序

选择排序

  1. 元数据{5,7,2,6,3} 一共比较的轮数:是数据个数-1 1~arr.length-1
    0~arr.length-2

  2. 第一轮比较:{2,7,5,6,3} 确定一个最小值放在索引为0的位置
    比较规则:拿索引为0的第一个数据和后面的每一个数据比较,找到最小的放在索引为0的位置

  3. 在这里插入图片描述

  4. 在这里插入图片描述

冒泡排序

  1. 选择排序和冒泡排序比较:

  2. 冒泡排序更简单

  3. 选择排序执行效率相对更高

  4. 在这里插入图片描述

二分法查找

  1. 先升序 排序为前提

  2. 最小索引:min

  3. 最大索引:max

  4. 中间索引:mid=(min+max)/2

  5. 如果找到返回索引:

  6. 如果不存在要查找数据,返回-1

  7. 在这里插入图片描述

可变参数

  1. 可变 可以有,可以没有,有的个数可变

  2. … :表示可变参数,放在数据类型和参数名之间 int a,int … b

  3. 可变参数要写在参数列表的最后面

  4. 可变参数,会内部自动为它创建一个数组,如果要在方法中使用可变参数的内容,需要使用数组的使用方式

Arrays

  1. static int[] copyOf(int[] original, int newLength)

  2. 复制指定的数组,截取或用 0
    填充(如有必要),以使副本具有指定的长度。

  3. 默认从索引为0的位置开始拷贝,返回新数组

  4. 在这里插入图片描述

### 实现二维数组按照行顺序排序 在 PHP 中,可以通过自定义函数实现二维数组按照行顺序进行排序。具体而言,可以利用 `usort()` 函数配合回调函数完成此操作。`usort()` 是一种灵活的排序工具,允许开发者通过编写逻辑来控制排序行为。 以下是基于 PHP 的解决方案: #### 方法描述 为了实现二维数组按照行顺序排序,需要先明确行顺序的标准(例如某一行作为参考标准)。假设有一个二维数组 `$data` 和一个预设的行索引列表 `$rowOrder` 表示期望的行顺序,则可以根据该列表重调整数组中的行位置[^1]。 #### 示例代码 以下是一个完整的例子,展示如何根据指定的行顺序对二维数组进行重排: ```php <?php $data = [ ['id' => 3, 'name' => 'Alice'], ['id' => 1, 'name' => 'Bob'], ['id' => 2, 'name' => 'Charlie'] ]; $rowOrder = [1, 2, 0]; // 定义的行顺序 // 创建一个的数组用于存储结果 $result = array_map(function($index) use ($data) { return $data[$index]; }, $rowOrder); print_r($result); ?> ``` 上述代码中,`$rowOrder` 数组指定了数组中每行的位置映射关系。通过 `array_map()` 配合匿名函数实现了行的重排列[^4]。 如果目标是按照某一列的具体值而非固定索引来决定行顺序,则可采用更复杂的比较器逻辑。例如,下面的例子展示了如何依据 `'id'` 字段升序排列二维数组: ```php <?php $data = [ ['id' => 3, 'name' => 'Alice'], ['id' => 1, 'name' => 'Bob'], ['id' => 2, 'name' => 'Charlie'] ]; usort($data, function($a, $b) { return $a['id'] <=> $b['id']; // 使用宇航员运算符进行三元比较 }); print_r($data); ?> ``` 这里使用了 `usort()` 并提供了一个闭包函数作为参数,其中 `<=>` 运算符简化了数值间的大小判断过程[^3]。 #### 注意事项 - 如果输入数据不满足预期结构(如某些行缺少关键字段),则需提前验证并处理异常情况。 - 对于非常大的数据集,应考虑性能优化措施以减少内存消耗和计算时间。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值