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 获取et和excel的版本号
Apr 09 Python
python类继承用法实例分析
May 27 Python
Python中type的构造函数参数含义说明
Jun 21 Python
详解python如何调用C/C++底层库与互相传值
Aug 10 Python
浅析Python中return和finally共同挖的坑
Aug 18 Python
使用Python的package机制如何简化utils包设计详解
Dec 11 Python
python生成器与迭代器详解
Jan 01 Python
python中的&amp;&amp;及||的实现示例
Aug 07 Python
django formset实现数据表的批量操作的示例代码
Dec 06 Python
python中设置超时跳过,超时退出的方式
Dec 13 Python
python如何求圆的面积
Jul 01 Python
python 判断一组数据是否符合正态分布
Sep 23 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
菜鸟修复电子管记
2021/03/02 无线电
一个ubbcode的函数,速度很快.
2006/10/09 PHP
php date()日期时间函数详解
2010/05/16 PHP
PHP 关于访问控制的和运算符优先级介绍
2013/07/08 PHP
PHP strstr 函数判断字符串是否否存在的实例代码
2013/09/28 PHP
Zend Framework入门教程之Zend_Session会话操作详解
2016/12/08 PHP
php中遍历二维数组并以表格的形式输出的方法
2017/01/03 PHP
从jquery的过滤器.filter()方法想到的
2013/09/29 Javascript
使用js解决由border属性引起的div宽度问题
2013/11/26 Javascript
基于jQuery.Hz2Py.js插件实现的汉字转拼音特效
2015/05/07 Javascript
一张Web前端的思维导图分享
2015/07/03 Javascript
[原创]JQuery 在表单提交之前修改 提交的值
2016/04/14 Javascript
关于Vue背景图打包之后访问路径错误问题的解决
2017/11/03 Javascript
微信小程序6位或多位验证码密码输入框功能的实现代码
2018/05/29 Javascript
关于vue编译版本引入的问题的解决
2018/09/17 Javascript
angularJS实现不同视图同步刷新详解
2018/10/09 Javascript
javascript中一些奇葩的日期换算方法总结
2018/11/14 Javascript
JS实现旋转木马轮播图
2020/01/01 Javascript
vue+element-ui JYAdmin后台管理系统模板解析
2020/07/28 Javascript
常见的在Python中实现单例模式的三种方法
2015/04/08 Python
深入分析python中整型不会溢出问题
2018/06/18 Python
django rest framework vue 实现用户登录详解
2019/07/29 Python
python线程信号量semaphore使用解析
2019/11/30 Python
如何基于python3和Vue实现AES数据加密
2020/03/27 Python
在pycharm中创建django项目的示例代码
2020/05/28 Python
交通事故赔偿协议书范本
2014/04/15 职场文书
小学生国旗下演讲稿
2014/04/25 职场文书
天猫活动策划方案
2014/08/21 职场文书
个人工作表现自我评价
2015/03/06 职场文书
公司聚餐通知
2015/04/22 职场文书
歼十出击观后感
2015/06/11 职场文书
2019年度开业庆典祝福语大全!
2019/07/05 职场文书
某药房的新员工入职告知书!
2019/07/15 职场文书
创业计划书之川味火锅店
2019/09/02 职场文书
使用 JavaScript 制作页面效果
2021/04/21 Javascript
使用Nginx搭载rtmp直播服务器的方法
2021/10/16 Servers