二维数组,每行、列升序排列,判断某整数是否在数组中

判断整数是否在行列升序二维数组中
博客介绍了如何在一个二维数组中,每一行和每一列都按升序排列的情况下,高效地判断某整数是否存在于数组中。通过分析数组特点,如行首尾元素的有序性,可以减少循环次数,提高查找效率。

二维数组,每行、列升序排列,判断某整数是否在数组中

原题如下

在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。附图片如下

解题思路

1.数组特点

二维数组;
数组为 行,列元素均为有序且递增的;
因为行列都是递增的,所以对于数组中元素来讲,有几个特定位置的元素可以利用,每行的首尾元素即[i][0],[i][length-1]

2.拆分,减少循环

要在数组中找到某个元素,离不开遍历,迎面的二维数组给我们的感觉是可能要遍历两层,依次加入数组的每一维,比较每一维的每个元素,循环 m*n 次。

拆分二维数组,无非就两层,加条件来限制循环的进入。这里,数组中特点位置元素就可以用了:若 整数大于当前行首元素且小于当前行尾元素,进循环。

3.准备代码
public class T2 {

   public static void main(String[] args){
   	int[][] numbers = {
  
  {1,2,8,9},{2,4,9,12},{4,7,10,13},{6,8,14,15}};
   	
   	long start=System.currentTimeMillis();
   	System.out.println("start:"+start);
   	boolean flag = haveTheNumber(numbers,15);
   	long end=System.currentTimeMillis
### 使用冒泡排序二维数组进行升序排列 对于二维数组,可以按照指定的行或来进行冒泡排序。下面分别介绍两种情况下的具体实现方式。 #### 按照行进行升序排列 当需要根据每一行的第一个元素对整个二维数组进行升序排列时,可以通过调整冒泡排序逻辑中的比较对象来完成此操作。以下是具体的VBA代码示例: ```vba Sub SortRowsAscending() Dim arr(1 To 3, 1 To 3) As Integer ' 假设有一个3x3的整数矩阵作为例子 ' 初始化arr... Dim tempRow() As Integer For i = LBound(arr, 1) To UBound(arr, 1) - 1 For j = i + 1 To UBound(arr, 1) If arr(i, 1) > arr(j, 1) Then ReDim Preserve tempRow(LBound(arr, 2) To UBound(arr, 2)) ' 将第j行复制给临时变量tempRow For k = LBound(arr, 2) To UBound(arr, 2) tempRow(k) = arr(j, k) Next ' 把较小的那一行移动到前面的位置上 For k = LBound(arr, 2) To UBound(arr, 2) arr(j, k) = arr(i, k) arr(i, k) = tempRow(k) Next End If Next j Next i End Sub ``` 这段代码展示了如何通过交换两行的方式来达到按首元素升序的效果[^2]。 #### 按照进行升序排列 如果目标是对某一特定据实施升序处理,则可以在原有基础上稍作修改,使内部循环遍历的是该而非单个值。这里给出Python版本的例子以便更清晰地理解过程: ```python def sort_columns_ascending(matrix, col_index=0): n_rows = len(matrix) n_cols = len(matrix[0]) for row in range(n_rows): for next_row in range(row + 1, n_rows): if matrix[row][col_index] > matrix[next_row][col_index]: # Swap entire rows based on the specified column value. matrix[row], matrix[next_row] = matrix[next_row], matrix[row] # Example usage with a list of lists representing a 2D array: matrix = [ [9, 8, 7], [6, 5, 4], [3, 2, 1] ] sort_columns_ascending(matrix, col_index=0) print("Sorted by first column:") for line in matrix: print(line) ``` 上述Python脚本实现了基于指定索引位置上的值执行升序排列的功能[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值