Python實(shí)現(xiàn)二維有序數(shù)組查找的方法
本文實(shí)例講述了Python實(shí)現(xiàn)二維有序數(shù)組查找的方法。分享給大家供大家參考,具體如下:
題目:在一個(gè)二維數(shù)組中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請(qǐng)完成一個(gè)函數(shù),輸入這樣的一個(gè)二維數(shù)組和一個(gè)整數(shù),判斷數(shù)組中是否含有該整數(shù)。
這題目屬于比較簡(jiǎn)單但又很不容易想到的,問(wèn)了兩個(gè)同學(xué),大家一時(shí)都沒(méi)有想出來(lái)怎么解決比較快。第一反應(yīng)都是二分查找。對(duì)于每一行進(jìn)行二分查找,然后查找過(guò)程可以把某些列排除掉,這是大家都能想到的基本的思路。
比較好的另一種思路是,首先選取數(shù)組右上角的數(shù)字,如果該數(shù)字等于要查找的數(shù)字,則查找結(jié)束;如果該數(shù)字大于要查找的數(shù)字,剔除這個(gè)數(shù)字所在的列,如果該數(shù)字小于要查找的數(shù)字,剔除這個(gè)數(shù)字所在的行。這樣每一步都可以剔除一行或一列,查找的速度比較快。
python實(shí)現(xiàn)的代碼:
# -*- coding:utf-8 -*- ''' 題目:在一個(gè)二維數(shù)組中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。 請(qǐng)完成一個(gè)函數(shù),輸入這樣的一個(gè)二維數(shù)組和一個(gè)整數(shù),判斷數(shù)組中是否含有該整數(shù)。 ''' def search(array, num): # 參數(shù)合法性判斷忽略 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)
更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python Socket編程技巧總結(jié)》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python入門與進(jìn)階經(jīng)典教程》及《Python文件與目錄操作技巧匯總》
希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。
- Python實(shí)現(xiàn)二分查找算法實(shí)例
- python二分查找算法的遞歸實(shí)現(xiàn)方法
- Python二分查找詳解
- Python實(shí)現(xiàn)二分查找與bisect模塊詳解
- Python基于二分查找實(shí)現(xiàn)求整數(shù)平方根的方法
- 簡(jiǎn)介二分查找算法與相關(guān)的Python實(shí)現(xiàn)示例
- python實(shí)現(xiàn)二分查找算法
- python 二分查找和快速排序?qū)嵗斀?/a>
- Python實(shí)現(xiàn)查找數(shù)組中任意第k大的數(shù)字算法示例
- Python實(shí)現(xiàn)在某個(gè)數(shù)組中查找一個(gè)值的算法示例
- Python查找數(shù)組中數(shù)值和下標(biāo)相等的元素示例【二分查找】
相關(guān)文章
python3實(shí)現(xiàn)常見(jiàn)的排序算法(示例代碼)
排序是非常常見(jiàn)的排序算法,今天給大家分享幾種比較常見(jiàn)的排序算法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2021-07-07python將MongoDB里的ObjectId轉(zhuǎn)換為時(shí)間戳的方法
這篇文章主要介紹了python將MongoDB里的ObjectId轉(zhuǎn)換為時(shí)間戳的方法,涉及Python操作MongoDB及字符串轉(zhuǎn)換的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-03-03Python面向?qū)ο缶幊袒A(chǔ)實(shí)例分析
這篇文章主要介紹了Python面向?qū)ο缶幊袒A(chǔ),結(jié)合實(shí)例形式分析了Python面向?qū)ο缶幊填惖亩x、繼承、特殊方法及模塊相關(guān)原理與操作技巧,需要的朋友可以參考下2020-01-01ChatGLM-6B+LangChain環(huán)境部署與使用實(shí)戰(zhàn)
這篇文章主要介紹了ChatGLM-6B+LangChain環(huán)境部署與使用方法,結(jié)合實(shí)例形式詳細(xì)分析了ChatGLM-6B+LangChain環(huán)境部署相關(guān)步驟、實(shí)現(xiàn)方法與相關(guān)注意事項(xiàng),需要的朋友可以參考下2023-07-07Python django框架輸入漢字,數(shù)字,字符生成二維碼實(shí)現(xiàn)詳解
這篇文章主要介紹了Python django框架輸入漢字,數(shù)字,字符轉(zhuǎn)成二維碼實(shí)現(xiàn)詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-09-09Python使用matplotlib實(shí)現(xiàn)繪制自定義圖形功能示例
這篇文章主要介紹了Python使用matplotlib實(shí)現(xiàn)繪制自定義圖形功能,結(jié)合實(shí)例形式分析了Python基于matplotlib模塊實(shí)現(xiàn)自定義圖形繪制相關(guān)操作技巧,需要的朋友可以參考下2018-01-01Python中if elif else及縮進(jìn)的使用簡(jiǎn)述
這篇文章主要介紹了Python中if elif else及縮進(jìn)的使用,代碼簡(jiǎn)單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2018-05-05