日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

合并数组:双针模型,原地实现

發(fā)布時(shí)間:2024/9/15 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 合并数组:双针模型,原地实现 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

合并數(shù)組

給定兩個(gè)數(shù)組
a = [4,5,6,9,0,0,0]
b = [1,2,3]
最后輸出[1, 2, 3, 4, 5, 6, 9]

第一種實(shí)現(xiàn)方式雙針模型:

def sortTwoSortedArry(a,b):b_num = len(b)a_num = len(a)-b_numli = []i ,j =0,0# 雙針模型從左往右掃描,終止條件是,只要任意一個(gè)數(shù)組走完了,# 走完了沒有完的那個(gè)數(shù)組直接接上就行了while i<a_num and j <b_num:if a[i] <= b[j]:li.append(a[i])i +=1if b[j] < a[i]:li.append(b[j])j +=1# 沒走完的直接把尾巴接上去li += a[i:a_num]li += b[j:b_num] return li

第二種方式原地實(shí)現(xiàn):

def sortTwoSortedArry_in_place(a,b):b_num = len(b)total_num = len(a)a_num = total_num-b_num# 原地方式,就需要倒著放,這個(gè)也是比較一般的思路# 原地操作一般想法,一是,取出一個(gè)元素放在空中,留出一個(gè)空# 二是純粹通過交換來實(shí)現(xiàn)# 三是,哪里有空位就往哪里放,倒著放是一種思路# 指向數(shù)組a的數(shù)組i = a_num-1# 指向數(shù)組bj = b_num-1# 最終結(jié)果的指針k = total_num-1while i >=0 and j>=0:if a[i] >= b[j]:a[k] = a[i]i -=1k -=1if b[j] > a[i]:a[k] = b[j]j -=1k -=1 # 把尾巴接上 # a[:i+1] = a[:i+1]a[:j+1] = b[:j+1]

運(yùn)行結(jié)果

a = [4,5,6,9,0,0,0] b = [1,2,3] print(sortTwoSortedArry(a,b)) print(a) sortTwoSortedArry_in_place(a,b) print(a)runfile('D:/share/test/arry_and.py', wdir='D:/share/test') [1, 2, 3, 4, 5, 6, 9] [4, 5, 6, 9, 0, 0, 0] [1, 2, 3, 4, 5, 6, 9]

總結(jié)

以上是生活随笔為你收集整理的合并数组:双针模型,原地实现的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。