• 在一个二维有序数组中,查找指定的数据是否存在


    Say Given a 2d array where all the numbers in the array are in increasing order from left to right and top to bottom.

    What is the best way to search and determine if a target number is in the array?

    sample:

    int a[][] = {
            {1,    3,    5,    7,    9},
            {2,    6,    11,    13,    15},
            {4, 12,    17, 19, 21},
            {8, 14, 18, 23, 25}//,
            //{10,16, 20, 24, 26}
    };

    A: solution 1

    从左下脚开始扫描需要查找的值value,

    1. 如果 value == a[row][col],说明找到,返回

    2. 如果value < a[row][col],那么row--

    3. 如果value > a[row][col],那么col++

    4. 如果一直到 row < 0 && col > max_col,说明没有找到,失败。

    示例代码(passed testing)

    View Code
        static boolean search2ndArrayData(int value)
    {
    int a[][] = {
    {1, 3, 5, 7, 9},
    {2, 6, 11, 13, 15},
    {4, 12, 17, 19, 21},
    {8, 14, 18, 23, 25}//,
    //{10,16, 20, 24, 26}
    };

    if (value < a[0][0] || value > a[3][4])
    return false;

    int row = 3;
    int col = 0;

    while (col < 5 && row >= 0)
    {
    if (a[row][col] == value)
    {
    System.out.printf("find data %d row and column are [%d][%d]\n", value, row, col);
    return true;
    }
    else if (a[row][col] < value)
    col++;
    else
    row--;
    }

    return false;
    }



  • 相关阅读:
    01
    商城管理系统
    10
    09
    08
    07(3)
    07(2)
    07
    06
    jsp第一次作业
  • 原文地址:https://www.cnblogs.com/yayagamer/p/2314235.html
Copyright © 2020-2023  润新知