zoukankan      html  css  js  c++  java
  • 二维数组中的查找

     1 #include "stdafx.h"
     2 #include <iostream>
     3 #include <exception>
     4 using namespace std;
     5 
     6 /*二维数组中的查找*/
     7 /*
     8 题目:
     9 在一个二维数组中,每一行都按照从左到右递增的顺序排序,
    10 每一列都按照从上到下递增的顺序排序.请完成一个函数,
    11 输入这样的一个二维数组和一个整数,
    12 判断数组中是否含有该整数.
    13 */
    14 bool FindNumber(int *matrix,int columns,int rows,int key)
    15 {
    16     bool found = false;
    17     if(matrix != NULL && columns > 0 && rows > 0)
    18     {
    19         int row = 0;
    20         int column = columns-1;
    21         while(column>=0 && row<rows)
    22         {
    23             if(matrix[row*columns+column] == key)
    24             {
    25                 found = true;
    26                 break;
    27             }
    28             else if(matrix[row*columns+column] > key)
    29             {
    30                 column--;
    31             }
    32             else
    33             {
    34                 row++;
    35             }
    36         }
    37     }
    38     return found;
    39 }
    40 
    41 int _tmain(int argc, _TCHAR* argv[])
    42 { 
    43     int matrix[]={1,2,8,9,2,4,9,12,4,7,10,13,6,8,11,15};
    44     int columns = 4;
    45     int rows = 4;
    46     cout<<FindNumber(matrix,columns,rows,12);
    47     return 0 ;
    48 }

    规律:选取右上角的数字。如果等于,查找结束,如果大于,去掉该数字所在的列,如果小于,去掉这个数字所在的行.

  • 相关阅读:
    实现IEnumberable接口和IEnumberator
    XAML-1
    Java基础00-Java概述1
    详解Lombok中的@Builder用法
    stream之map的用法
    stream之forEach的用法
    Java中map.getOrDefault()方法的使用
    BiPredicate的test()方法
    Function.identity()
    java 8 lamda Stream的Collectors.toMap 参数
  • 原文地址:https://www.cnblogs.com/crazycodehzp/p/3555760.html
Copyright © 2011-2022 走看看