91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python3合并兩個有序數組的案例分析

發布時間:2020-08-12 11:52:15 來源:億速云 閱讀:154 作者:小新 欄目:開發技術

Python3合并兩個有序數組的案例分析?這個問題可能是我們日常學習或工作經常見到的。希望通過這個問題能讓你收獲頗深。下面是小編給大家帶來的參考內容,讓我們一起來看看吧!

第一種思路,把兩個數組合為一個數組然后再排序,問題又回歸到冒泡和快排了,沒有用到兩個數組的有序性。(不好)

第二種思路,循環比較兩個有序數組頭位元素的大小,并把頭元素放到新數組中,從老數組中刪掉,直到其中一個數組長度為0。然后再把不為空的老數組中剩下的部分加到新數組的結尾。(好)

第二種思路的排序算法與測試代碼如下:

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))

反思了一下上面的過程,不應該用remove方法,因為仔細想一下remove方法可能比較耗時,不算最簡單。

改進一下,改用索引元素比較法替代頭位元素比較法:

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))

這個基本就是最簡單的方法了。

感謝各位的閱讀!看完上述內容,你們對Python3合并兩個有序數組的案例分析大概了解了嗎?希望文章內容對大家有所幫助。如果想了解更多相關文章內容,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

霍州市| 息烽县| 台中县| 信丰县| 铜鼓县| 寿宁县| 平和县| 石棉县| 南和县| 宣化县| 云林县| 南投县| 宁远县| 东阳市| 竹山县| 临汾市| 潜江市| 措美县| 巴楚县| 新昌县| 武川县| 内黄县| 乌拉特中旗| 秦皇岛市| 彭山县| 宣化县| 朝阳县| 安化县| 六盘水市| 肇东市| 大名县| 固阳县| 托里县| 镇康县| 广昌县| 宜都市| 永和县| 保定市| 即墨市| 霍林郭勒市| 丰县|