官术网_书友最值得收藏!

  • 算法學習指南
  • (美)喬治·海涅曼
  • 451字
  • 2022-12-20 19:03:05

由于最大值實際上肯定包含在A中,因此程序清單1-2中正確的largest()函數先選擇A的第1個值作為my_max,再對其他值進行檢查,查找是否有其他值比它更大。

程序清單1-2 在列表中查找最大值的正確函數

def largest(A):
  my_max = A[0]                   ?
  for idx in range(1, len(A)):    ?
    if my_max < A[idx]:
      my_max = A[idx]             ?
  return my_max

? 把my_max設置為A中位于索引位置0的第1個值。

? idx1len(A)(不包括后者)的整數。

? 如果A[idx]的值更大,就更新my_max

蝎子.tif如果對空列表調用largest()max(),將會觸發一個異?!癡alueError:List index out of range exception”。這類運行時異常是程序員所犯的錯誤,說明他們沒有理解largest()所操作的列表至少要包含一個值。

既然我們已經擁有了這個算法的一種正確的Python實現,能不能確定這個新算法調用小于操作的次數呢?能!就是N?1次。我們修正了算法的缺陷,并提高了它的性能(當然,只是提高了微不足道的一點)。

為什么對小于操作的使用進行計數很重要呢?因為它是對兩個值進行比較時所使用的關鍵操作。其他所有程序語句(例如forwhile循環)在不同的實現中可以根據實際所使用的編程語言任意選擇。我們將在第2章對這個思路進行擴展,目前只要對關鍵操作進行計數就足夠了。

主站蜘蛛池模板: 屏山县| 姚安县| 商洛市| 雷州市| 古田县| 湛江市| 额敏县| 道真| 江孜县| 奎屯市| 兴海县| 新竹市| 策勒县| 台山市| 吉林省| 邯郸市| 罗江县| 左权县| 蓬安县| 新干县| 武安市| 莱西市| 湾仔区| 武鸣县| 颍上县| 荃湾区| 辽宁省| 定边县| 垣曲县| 杨浦区| 武隆县| 嘉黎县| 裕民县| 武强县| 麻阳| 四平市| 开鲁县| 泉州市| 百色市| 松桃| 西乌|