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程序设计有所帮助。

相关文章

  • Pandas去除重复项函数详解drop_duplicates()

    Pandas去除重复项函数详解drop_duplicates()

    这篇文章主要介绍了Pandas去除重复项函数drop_duplicates(),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02
  • Python时间序列处理之ARIMA模型的使用讲解

    Python时间序列处理之ARIMA模型的使用讲解

    今天小编就为大家分享一篇关于Python时间序列处理之ARIMA模型的使用讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-04-04
  • Python使用微信接入图灵机器人过程解析

    Python使用微信接入图灵机器人过程解析

    这篇文章主要介绍了Python使用微信接入图灵机器人过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • Python列表list排列组合操作示例

    Python列表list排列组合操作示例

    这篇文章主要介绍了Python列表list排列组合操作,涉及Python排列组合数值运算相关操作技巧,需要的朋友可以参考下
    2018-12-12
  • 协程Python 中实现多任务耗资源最小的方式

    协程Python 中实现多任务耗资源最小的方式

    协程是 Python 中另外一种实现多任务的方式,只不过比线程更小,占用更小执行单元(理解为需要的资源)。这篇文章主要介绍了协程Python 中实现多任务耗资源最小的方式,需要的朋友可以参考下
    2020-10-10
  • Django中使用Celery的方法示例

    Django中使用Celery的方法示例

    这篇文章主要介绍了Django中使用Celery的方法示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-11-11
  • python使用matplotlib画出的图怎样放到word中

    python使用matplotlib画出的图怎样放到word中

    这篇文章主要介绍了python使用matplotlib画出的图怎样放到word中问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09
  • python中matplotlib条件背景颜色的实现

    python中matplotlib条件背景颜色的实现

    这篇文章主要给大家介绍了关于python中matplotlib条件背景颜色的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用python具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-09-09
  • Python完全新手教程

    Python完全新手教程

    Python完全新手教程...
    2007-02-02
  • Django中URL的参数传递的实现

    Django中URL的参数传递的实现

    这篇文章主要介绍了Django中URL的参数传递的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08

最新评论