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


Posted in Python onApril 27, 2016

本文实例讲述了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登录豆瓣并发帖的方法
Jul 08 Python
简析Python的闭包和装饰器
Feb 26 Python
python使用opencv读取图片的实例
Aug 17 Python
Python打印“菱形”星号代码方法
Feb 05 Python
Python数据结构之图的应用示例
May 11 Python
python 定义给定初值或长度的list方法
Jun 23 Python
python日志logging模块使用方法分析
May 23 Python
Django对数据库进行添加与更新的例子
Jul 12 Python
python 输出列表元素实例(以空格/逗号为分隔符)
Dec 25 Python
Python 解决火狐浏览器不弹出下载框直接下载的问题
Mar 09 Python
Python的3种运行方式:命令行窗口、Python解释器、IDLE的实现
Oct 10 Python
python 离散点图画法的实现
Apr 01 Python
Python数组遍历的简单实现方法小结
Apr 27 #Python
Python的“二维”字典 (two-dimension dictionary)定义与实现方法
Apr 27 #Python
Python单链表简单实现代码
Apr 27 #Python
python版本的读写锁操作方法
Apr 25 #Python
Python简单实现enum功能的方法
Apr 25 #Python
Python爬虫辅助利器PyQuery模块的安装使用攻略
Apr 24 #Python
Linux下通过python访问MySQL、Oracle、SQL Server数据库的方法
Apr 23 #Python
You might like
基于文本的访客签到簿
2006/10/09 PHP
php异常处理技术,顶级异常处理器
2012/06/13 PHP
解析阿里云ubuntu12.04环境下配置Apache+PHP+PHPmyadmin+MYsql
2013/06/26 PHP
标准版Eclipse搭建PHP环境的详细步骤
2015/11/18 PHP
使用正则替换变量
2007/05/05 Javascript
jquery tools之tabs 选项卡/页签
2009/07/25 Javascript
通过Javascript将数据导出到外部Excel文档的函数代码
2012/06/15 Javascript
jquery中使用$(#form).submit()重写提交表单无效原因分析及解决
2013/03/25 Javascript
对于Form表单reset方法的新认识
2014/03/05 Javascript
详解AngularJS中的依赖注入机制
2015/06/17 Javascript
js实现select下拉框菜单
2015/12/08 Javascript
Javascript简写条件语句(推荐)
2016/06/12 Javascript
用jquery快速解决IE输入框不能输入的问题
2016/10/04 Javascript
详解Vue 多级组件透传新方法provide/inject
2018/05/09 Javascript
JavaScript简单实现动态改变HTML内容的方法示例
2018/12/25 Javascript
javascript实现前端成语点击验证优化
2020/06/24 Javascript
jQuery 实现扁平式小清新导航
2020/07/07 jQuery
JS实现多功能计算器
2020/10/28 Javascript
[40:19]完美世界DOTA2联赛PWL S3 Rebirth vs CPG 第二场 12.18
2020/12/19 DOTA
python中元类用法实例
2014/10/10 Python
Python入门_学会创建并调用函数的方法
2017/05/16 Python
python3将变量输入的简单实例
2020/08/19 Python
简单了解python关键字global nonlocal区别
2020/09/21 Python
详解使用CSS3的@media来编写响应式的页面
2017/11/01 HTML / CSS
html5 css3实例教程 一款html5和css3实现的小机器人走路动画
2014/10/20 HTML / CSS
古驰英国官网:GUCCI英国
2020/03/07 全球购物
高一历史教学反思
2014/01/13 职场文书
办公自动化专业大学生职业规划书
2014/03/06 职场文书
美术第二课堂活动总结
2014/07/08 职场文书
庆祝儿童节标语
2014/10/09 职场文书
2014幼儿教师个人工作总结
2014/12/03 职场文书
兼职安全员岗位职责
2015/02/15 职场文书
督导岗位职责范本
2015/04/10 职场文书
2015年导购员工作总结
2015/04/25 职场文书
某某幼儿园的教育教学管理调研分析报告
2019/11/29 职场文书
理解深度学习之深度学习简介
2021/04/14 Python