• 在杨氏矩阵中查找一个数字是否存在


    杨氏矩阵

    有一个二维数组. 数组的每行从左到右是递增的,每列从上到下是递增的.

    在这样的数组中查找一个数字是否存在。 时间复杂度小于O(N);

    数组:

    1  2  3       1  3  4       1  2  3

    2  3  4       2  4  5       4  5  6

    3  4  5       4  5  6       7  8  9

     1 #include<stdio.h>
     2 
     3 #define ROW 3
     4 #define COL 3
     5 
     6 int Find_num(int arr[ROW][COL],int num)
     7 {
     8     //从右上角开始查询
     9     int row = 0;
    10     int col = COL - 1;
    11     while (row < ROW && col<COL)
    12     {
    13         if (arr[row][col] > num)
    14         {
    15             //查询左边的数
    16             --col;
    17         }
    18         if (arr[row][col] < num)
    19         {
    20             //查询下一行
    21             ++row;
    22         }
    23         if (arr[row][col] == num)
    24         {
    25             break;
    26         }
    27     }
    28     if (arr[row][col] == num)
    29     {
    30         return 1;
    31     }
    32     else
    33     {
    34         return 0;
    35     }
    36 }
    37 
    38 int main()
    39 {
    40     //要求时间复杂度小于=O(N),则可以利用杨氏矩阵的一些特性
    41     //如果将每一个都数都查找一遍,则最长时间应该为O(row * col)
    42     //如果利用每行从左到右是递增的,每列从上到下是递增的这一性质则为O(row + col)
    43     int arr[ROW][COL] = { 1,2,3,3,4,5,4,5,6};
    44     int num = 0;
    45     while (1)
    46     {
    47         printf("请输入您要查找的数字:
    ");
    48         scanf("%d", &num);
    49         int find_num = Find_num(arr, num);
    50         if (find_num == 0)
    51         {
    52             printf("数字不存在!
    ");
    53         }
    54         else
    55         {
    56             printf("数字存在!");
    57         }
    58 
    59     }
    60 
    61     return 0;
    62 }
  • 相关阅读:
    位运算(&)实现分享弹窗上的图标动态显示/隐藏
    MySql如何编写高效的SQL
    Xamarin跨平台移动开发解决方案
    android wireshark抓包和fiddler抓包
    webview使用总结及注意事项
    让你的Android程序更省电
    android precelable和Serialization序列化数据传输
    图片下载缓存防止OOM
    二分搜索怎么用?我和快手面试官进行了深度探讨
    二分查找详解
  • 原文地址:https://www.cnblogs.com/cuckoo-/p/10381190.html
Copyright © 2020-2023  润新知