Python实现二维有序数组查找的方法

 更新时间:2016年04月27日 09:51:28   作者:阿涵-_-  
这篇文章主要介绍了Python实现二维有序数组查找的方法,结合实例形式分析了Python二维有序数组的查找思路及具体实现技巧,需要的朋友可以参考下

本文实例讲述了Python实现二维有序数组查找的方法。分享给大家供大家参考,具体如下:

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

这题目属于比较简单但又很不容易想到的,问了两个同学,大家一时都没有想出来怎么解决比较快。第一反应都是二分查找。对于每一行进行二分查找,然后查找过程可以把某些列排除掉,这是大家都能想到的基本的思路。

比较好的另一种思路是,首先选取数组右上角的数字,如果该数字等于要查找的数字,则查找结束;如果该数字大于要查找的数字,剔除这个数字所在的列,如果该数字小于要查找的数字,剔除这个数字所在的行。这样每一步都可以剔除一行或一列,查找的速度比较快。

python实现的代码:

# -*- coding:utf-8 -*-
'''
题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。
请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
'''
def search(array, num):
  # 参数合法性判断忽略
  i = 0
  j = len(array[0]) - 1
  max_i = len(array) - 1
  while i <= max_i and j >= 0:
    if array[i][j] == num:
      return True
    elif array[i][j] > num:
      j = j - 1
    else:
      i = i + 1
  return False
if __name__ == '__main__':
  a = [[1, 2, 8, 9],
     [2, 4, 9, 12],
     [4, 7, 10, 13],
     [6, 8, 11, 15],
     ]
  print search(a, 14)
  print search(a, 7)
  print search(a, 0)

更多关于Python相关内容感兴趣的读者可查看本站专题:《Python数据结构与算法教程》、《Python Socket编程技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总

希望本文所述对大家Python程序设计有所帮助。

相关文章

  • 使用Python编写一个Lisp语言的解释器

    使用Python编写一个Lisp语言的解释器

    这篇文章主要为大家详细介绍了如何使用Python编写一个简单的Lisp语言的解释器,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-11-11
  • Django 中自定义 Admin 样式与功能的实现方法

    Django 中自定义 Admin 样式与功能的实现方法

    这篇文章主要介绍了Django 中自定义 Admin 样式与功能的实现方法,本文图文并茂给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-07-07
  • python中SSH远程登录设备的实现方法

    python中SSH远程登录设备的实现方法

    本文主要介绍了python中SSH远程登录设备,python中支持SSH协议的模块主要有Paramiko和netmiko两种,本文主要介绍了netmiko模块,具有一定的参考价值,感兴趣的可以了解一下
    2022-04-04
  • python顺序执行多个py文件的方法

    python顺序执行多个py文件的方法

    今天小编大家分享一篇python顺序执行多个py文件的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-06-06
  • 如何利用python将Xmind用例转为Excel用例

    如何利用python将Xmind用例转为Excel用例

    这篇文章主要介绍了如何利用python将Xmind用例转为Excel用例,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-06-06
  • Python异常处理例题整理

    Python异常处理例题整理

    在本篇文章里
    2019-07-07
  • Pycharm中import torch报错的快速解决方法

    Pycharm中import torch报错的快速解决方法

    这篇文章主要介绍了Pycharm中import torch报错的快速解决方法,很多朋友容易碰到这个问题,今天小编特此把解决方案分享到脚本之家平台供大家参考,需要的朋友可以参考下
    2020-03-03
  • python 用matplotlib绘制折线图详情

    python 用matplotlib绘制折线图详情

    这篇文章主要讲诉了python 用matplotlib绘制折线图的详细内容,众所周知,matplotlib 是一款功能强大开源的数据可视化模块,凭借着强大的扩展性构建出更高级别的绘图工具接口如seaborn、ggplot,下面我们就根据之前两篇文章基础掌握折线图的绘制,需要的朋友可以参考一下
    2021-12-12
  • python 利用浏览器 Cookie 模拟登录的用户访问知乎的方法

    python 利用浏览器 Cookie 模拟登录的用户访问知乎的方法

    今天小编就为大家分享一篇python 利用浏览器 Cookie 模拟登录的用户访问知乎的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07
  • 如何基于Python实现一个庆祝国庆节的小程序

    如何基于Python实现一个庆祝国庆节的小程序

    这篇文章主要介绍了如何基于Python实现一个庆祝国庆节的小程序,增加了互动选择祝福语、查询信息、播放背景音乐及趣味小测验等功能,使用tkinter增强GUI,提升用户互动体验,需要的朋友可以参考下
    2024-09-09

最新评论