Python3合并兩個(gè)有序數(shù)組代碼實(shí)例
第一種思路,把兩個(gè)數(shù)組合為一個(gè)數(shù)組然后再排序,問題又回歸到冒泡和快排了,沒有用到兩個(gè)數(shù)組的有序性。(不好)
第二種思路,循環(huán)比較兩個(gè)有序數(shù)組頭位元素的大小,并把頭元素放到新數(shù)組中,從老數(shù)組中刪掉,直到其中一個(gè)數(shù)組長度為0。然后再把不為空的老數(shù)組中剩下的部分加到新數(shù)組的結(jié)尾。(好)
第二種思路的排序算法與測試代碼如下:
def merge_sort(a, b):
ret = []
while len(a)>0 and len(b)>0:
if a[0] <= b[0]:
ret.append(a[0])
a.remove(a[0])
if a[0] >= b[0]:
ret.append(b[0])
b.remove(b[0])
if len(a) == 0:
ret += b
if len(b) == 0:
ret += a
return ret
if __name__ == '__main__':
a = [1,3,4,6,7,78,97,190]
b = [2,5,6,8,10,12,14,16,18]
print(merge_sort(a, b))
反思了一下上面的過程,不應(yīng)該用remove方法,因?yàn)樽屑?xì)想一下remove方法可能比較耗時(shí),不算最簡單。
改進(jìn)一下,改用索引元素比較法替代頭位元素比較法:
def merge_sort(a, b):
ret = []
i = j = 0
while len(a) >= i + 1 and len(b) >= j + 1:
if a[i] <= b[j]:
ret.append(a[i])
i += 1
else:
ret.append(b[j])
j += 1
if len(a) > i:
ret += a[i:]
if len(b) > j:
ret += b[j:]
return ret
if __name__ == '__main__':
a = [1,3,4,6,7,78,97,190]
b = [2,5,6,8,10,12,14,16,18]
print(merge_sort(a, b))
這個(gè)基本就是最簡單的方法了。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
python中的scapy抓取http報(bào)文內(nèi)容
這篇文章主要介紹了python中的scapy抓取http報(bào)文內(nèi)容方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-08-08
新建文件時(shí)Pycharm中自動(dòng)設(shè)置頭部模板信息的方法
這篇文章主要介紹了新建文件時(shí)Pycharm中自動(dòng)設(shè)置頭部模板信息的方法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-04-04
基于PyQt5實(shí)現(xiàn)圖轉(zhuǎn)文功能(示例代碼)
PyQt提供了一個(gè)設(shè)計(jì)良好的窗口控件集合,具有更方便的操作性。學(xué)過VB的同學(xué)會知道,相比與VB的使用,在界面設(shè)計(jì)上元素更豐富,這篇文章主要介紹了基于PyQt5完成的圖轉(zhuǎn)文功能,需要的朋友可以參考下2022-06-06
Python面向?qū)ο缶幊讨嘘P(guān)于類和方法的學(xué)習(xí)筆記
類與類方法是面向?qū)ο蟮木幊陶Z言中必不可少的特性,本文總結(jié)了Python面向?qū)ο缶幊讨嘘P(guān)于類和方法的學(xué)習(xí)筆記,需要的朋友可以參考下2016-06-06
基于pdf2docx模塊Python實(shí)現(xiàn)批量將PDF轉(zhuǎn)Word文檔的完整代碼教程
這篇文章主要介紹了基于pdf2docx模塊Python實(shí)現(xiàn)批量將PDF轉(zhuǎn)Word文檔的完整代碼教程,PDF文件是一種常見的文檔格式,如何轉(zhuǎn)換成word呢,需要的朋友可以參考下2023-04-04
PyTorch中Tensor的維度變換實(shí)現(xiàn)
這篇文章主要介紹了PyTorch中Tensor的維度變換實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08
一文詳解Python灰色預(yù)測模型實(shí)現(xiàn)示例
這篇文章主要為大家介紹了Python灰色預(yù)測模型實(shí)現(xiàn)示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02
pytest多進(jìn)程或多線程執(zhí)行測試實(shí)例
這篇文章介紹了pytest多進(jìn)程或多線程執(zhí)行測試的實(shí)例,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-07-07
Python OpenCV處理圖像之濾鏡和圖像運(yùn)算
這篇文章主要為大家詳細(xì)介紹了Python OpenCV處理圖像之濾鏡和圖像運(yùn)算,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-07-07

