精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

十個經典算法的 Python 實現

開發
本文我們將一步步探索并用Python實現這些算法,從基礎到進階,讓你的編程之旅更加精彩。

算法是編程世界的基石,對于Python初學者來說,掌握一些經典算法不僅能夠提升編程技能,還能幫助理解問題解決的邏輯。下面,我們將一步步探索并用Python實現這些算法,從基礎到進階,讓你的編程之旅更加精彩。

1. 二分查找

概念:在有序數組中查找目標值,每次比較中間元素,縮小搜索范圍。

示例代碼:

def binary_search(arr, target):
    low, high = 0, len(arr) - 1
    
    while low <= high:
        mid = (low + high) // 2
        if arr[mid] == target:
            return mid
        elif arr[mid] < target:
            low = mid + 1
        else:
            high = mid - 1
    return -1  # 如果沒找到返回-1

arr = [2, 3, 4, 10, 40]
target = 10
print("Element is present at index", binary_search(arr, target))

解釋:通過不斷將搜索區間分為兩半,直到找到目標或區間為空。

2. 冒泡排序

概念:重復遍歷要排序的數列,比較相鄰元素,如果順序錯誤就交換它們。

示例代碼:

def bubble_sort(arr):
    n = len(arr)
    for i in range(n):
        for j in range(0, n-i-1):
            if arr[j] > arr[j+1]:
                arr[j], arr[j+1] = arr[j+1], arr[j]
    return arr

arr = [64, 34, 25, 12, 22, 11, 90]
sorted_arr = bubble_sort(arr)
print("Sorted array is:", sorted_arr)

解釋:每一輪遍歷讓最大的元素“冒泡”到最后。

3. 快速排序

概念:選擇一個基準值,通過一趟排序將待排記錄分隔成獨立的兩部分,其中一部分記錄的關鍵字均比另一部分的關鍵字小,然后分別對這兩部分記錄繼續進行排序。

示例代碼:

def quick_sort(arr):
    if len(arr) <= 1:
        return arr
    pivot = arr[len(arr) // 2]
    left = [x for x in arr if x < pivot]
    middle = [x for x in arr if x == pivot]
    right = [x for x in arr if x > pivot]
    return quick_sort(left) + middle + quick_sort(right)

arr = [10, 7, 8, 9, 1, 5]
sorted_arr = quick_sort(arr)
print("Sorted array is:", sorted_arr)

解釋:遞歸地把小于基準值的元素和大于基準值的元素分開。

4. 插入排序

概念:將未排序序列中的數據依次插入到已排序序列中的適當位置。

示例代碼:

def insertion_sort(arr):
    for i in range(1, len(arr)):
        key = arr[i]
        j = i-1
        while j >=0 and key < arr[j] :
                arr[j + 1] = arr[j]
                j -= 1
        arr[j + 1] = key
    return arr

arr = [12, 11, 13, 5, 6]
sorted_arr = insertion_sort(arr)
print("Sorted array is:", sorted_arr)

解釋:逐步構建有序序列,適合小數據量排序。

5. 選擇排序

概念:每次從未排序的序列中找到最小(大)的元素,存放到排序序列的起始(末尾)位置。

示例代碼:

def selection_sort(arr):
    for i in range(len(arr)):
        min_idx = i
        for j in range(i+1, len(arr)):
            if arr[min_idx] > arr[j]:
                min_idx = j
        arr[i], arr[min_idx] = arr[min_idx], arr[i]
    return arr

arr = [64, 25, 12, 22, 11]
sorted_arr = selection_sort(arr)
print("Sorted array is:", sorted_arr)

解釋:每輪尋找最小值并移動到序列前端。

6. 鏈表反轉

概念:將鏈表的指向反向,頭節點變成尾節點,尾節點變成頭節點。

示例代碼:

class Node:
    def __init__(self, data=None, next=None):
        self.data = data
        self.next = next

def reverse_list(head):
    prev = None
    current = head
    while current:
        next_temp = current.next
        current.next = prev
        prev = current
        current = next_temp
    return prev

# 創建鏈表: 1->2->3
head = Node(1, Node(2, Node(3)))
reversed_head = reverse_list(head)
print("Reversed list:", end=" ")
while reversed_head:
    print(reversed_head.data, end=" -> ")
    reversed_head = reversed_head.next

解釋:通過改變節點的next指針來實現反轉。

7. 動態規劃 - 最長公共子序列

概念:找到兩個字符串中最長的相同子序列。

示例代碼:

def lcs(X, Y):
    m, n = len(X), len(Y)
    L = [[None]*(n+1) for i in range(m+1)]
    
    for i in range(m+1):
        for j in range(n+1):
            if i == 0 or j == 0:
                L[i][j] = 0
            elif X[i-1] == Y[j-1]:
                L[i][j] = L[i-1][j-1]+1
            else:
                L[i][j] = max(L[i-1][j], L[i][j-1])
    return L[m][n]

X = "AGGTAB"
Y = "GXTXAYB"
print("Length of LCS is", lcs(X, Y))

解釋:利用二維數組記錄子問題的解,自底向上計算最長公共子序列長度。

8. 深度優先搜索(DFS)

概念:訪問圖或樹中的節點,盡可能深地搜索,訪問完當前節點的所有鄰接節點后回溯。

示例代碼(圖的DFS):

def dfs(graph, node, visited=None):
    if visited is None:
        visited = set()
    visited.add(node)
    print(node, end=" ")
    for neighbour in graph[node]:
        if neighbour not in visited:
            dfs(graph, neighbour, visited)

graph = {'0': ['1', '2'],
         '1': ['0', '3', '4'],
         '2': ['0'],
         '3': ['1'],
         '4': ['1']}
dfs(graph, '0')

解釋:遞歸地訪問節點及其鄰居,用集合記錄已訪問節點避免循環。

9. 廣度優先搜索(BFS)

概念:從根節點開始,訪問最近的鄰接節點,然后訪問下一層的節點。

示例代碼(圖的BFS):

from collections import deque

def bfs(graph, root):
    visited = set()
    queue = deque([root])

    while queue:
        vertex = queue.popleft()
        print(vertex, end=" ")

        for neighbour in graph[vertex]:
            if neighbour not in visited:
                visited.add(neighbour)
                queue.append(neighbour)

graph = {'0': ['1', '2'],
         '1': ['0', '3', '4'],
         '2': ['0'],
         '3': ['1'],
         '4': ['1']}
bfs(graph, '0')

解釋:使用隊列保證按層次訪問節點。

10. 斐波那契數列

概念:每一項都是前兩項之和,通常從0和1開始。

示例代碼(遞歸與迭代):

# 遞歸
def fib_recursive(n):
    if n <= 1:
       return n
    else:
       return (fib_recursive(n-1) + fib_recursive(n-2))

# 迭代
def fib_iterative(n):
    a, b = 0, 1
    for _ in range(n):
        a, b = b, a+b
    return a

print("Fibonacci at position 10 using recursion:", fib_recursive(10))
print("Fibonacci at position 10 using iteration:", fib_iterative(10))

解釋:遞歸直觀但效率低,迭代效率高且內存占用少。

優化與應用場景

1. 二分查找的擴展

應用場景:適用于有序列表的快速查找,常見于數據庫索引、文件系統搜索等。

優化:可以設計為迭代或遞歸形式,考慮邊界條件的優化,如在鏈表中的實現需要額外的輔助結構。

2. 排序算法的性能對比

快速排序通常在平均情況下最快,但在最壞情況下的時間復雜度為O(n^2)。

歸并排序雖然穩定,但需要額外的存儲空間,時間復雜度始終為O(n log n)。

插入排序在小數據集或幾乎有序的數據集中表現良好,適合局部排序的優化場景。

3. 動態規劃與記憶化

LCS問題展示了動態規劃的核心思想,通過表格記錄子問題的解來避免重復計算。

優化:對于遞歸實現,可以通過緩存(記憶化)避免重復計算,減少時間復雜度。

4. 圖搜索算法的比較

DFS適用于尋找路徑、拓撲排序、連通性檢查。

BFS更適合尋找最短路徑問題,如在無權圖中尋找兩節點間的最短路徑。

優化:在大規模圖中,考慮使用并行處理或A*搜索等高級算法以提高效率。

5. 斐波那契數列的高效實現

矩陣快速冪:對于大數字的斐波那契數,可以利用數學中的矩陣乘法進行指數級優化。

空間優化:迭代方法已經很高效,但可以進一步優化,比如僅用兩個變量替換數組,節省內存。

實戰案例分析

案例:旅行商問題(TSP)的啟發式解決方案

旅行商問題是一個經典的組合優化問題,目標是找到訪問每個城市一次并返回起點的最短路徑。雖然這是一個NP難問題,但可以使用啟發式算法如遺傳算法、模擬退火或貪心算法找到近似解。

示例代碼(簡化版貪心算法):

def tsp_greedy(cities, start=0):
    unvisited = set(range(len(cities)))
    path = [start]
    total_distance = 0
    
    while unvisited:
        last_city = path[-1]
        nearest_city = min(unvisited, key=lambda city: cities[last_city][city])
        total_distance += cities[last_city][nearest_city]
        path.append(nearest_city)
        unvisited.remove(nearest_city)
        
    # Return to start
    total_distance += cities[path[-1]][start]
    path.append(start)
    
    return path, total_distance

# 假設cities是一個二維列表,表示城市間的距離
cities = [[0, 20, 15, 25], [20, 0, 30, 35], [15, 30, 0, 30], [25, 35, 30, 0]]
shortest_path, shortest_distance = tsp_greedy(cities)
print("Shortest Path:", shortest_path)
print("Distance:", shortest_distance)

分析:雖然貪心算法在TSP中可能不會得到最優解,但它簡單且快速,適合快速生成可行解,對于教學和理解啟發式算法非常有用。

責任編輯:趙寧寧 來源: PythonAI與圖像處理
相關推薦

2024-11-11 07:00:00

Python圖像識別

2024-05-30 12:27:42

Python代碼

2010-09-08 14:35:22

CSS

2024-12-03 14:33:42

Python遞歸編程

2011-08-15 09:15:09

私有云云計算

2025-07-31 06:35:00

2025-07-29 08:52:38

Python編碼開發

2024-07-18 15:08:27

2022-08-27 15:03:43

Python損失函數算法

2025-03-25 08:30:00

OpenCV計算機視覺圖像識別

2022-08-26 09:38:39

Pandas數據查詢

2022-03-10 12:03:33

Python算法代碼

2021-12-02 14:55:44

Python項目編程語言

2023-06-27 15:50:23

Python圖像處理

2024-04-28 10:00:24

Python數據可視化庫圖像處理庫

2024-06-26 13:11:40

2023-12-22 15:44:43

2022-05-12 08:12:51

PythonPip技巧

2022-08-19 16:09:08

Python損失函數算法

2024-02-01 12:53:00

PandasPython數據
點贊
收藏

51CTO技術棧公眾號

成人精品视频| 国产精品蜜月aⅴ在线| 国产精品一区在线| 97精品国产97久久久久久| 香蕉视频黄色在线观看| 欧美日韩女优| 亚洲在线视频免费观看| 免费成人av网站| 一级特黄特色的免费大片视频| 亚洲色图欧美| 亚洲精品视频播放| 在线看免费毛片| www.综合| 国产精品二区一区二区aⅴ污介绍| 亚洲自拍小视频| 五月天综合激情网| 婷婷久久综合| 亚洲免费人成在线视频观看| 精品人妻一区二区三区免费| 大胆人体一区| 亚洲午夜久久久| 性欧美大战久久久久久久免费观看| 国产成人精品白浆久久69| 新狼窝色av性久久久久久| 久久夜精品va视频免费观看| 熟女少妇一区二区三区| 国产一区二区av在线| 色噜噜狠狠成人中文综合| 奇米777四色影视在线看| 97视频精彩视频在线观看| 91天堂素人约啪| 91入口在线观看| 91国偷自产中文字幕久久| 久久裸体视频| 8090成年在线看片午夜| 欧美黑人精品一区二区不卡| 9999国产精品| 中文字幕免费国产精品| 特级西西人体wwwww| 视频一区中文字幕精品| 欧美美女一区二区| 亚洲免费av一区二区三区| 国产福利片在线观看| 亚洲蜜臀av乱码久久精品| 手机成人在线| 国产一级免费在线观看| 91免费看`日韩一区二区| 国产成人免费电影| 午夜精品久久久久久久96蜜桃| 免费亚洲电影在线| 国产成人极品视频| 在线观看日本视频| 嫩草成人www欧美| 91大神福利视频在线| 日韩xxx高潮hd| 激情视频一区| 久久久久久久国产精品| 麻豆91精品91久久久| 久久久人成影片免费观看| 久久精品99久久久香蕉| 麻豆天美蜜桃91| 亚洲免费二区| 久久97精品久久久久久久不卡| 91插插插插插插| 一区二区三区四区日韩| 免费不卡在线观看av| 久久久久久免费观看| 国产精品s色| 高清一区二区三区日本久| 精品在线视频免费观看| 亚洲免费影院| 日韩美女在线播放| 亚洲中文字幕在线一区| 国产综合色在线| 成人在线看片| 天堂在线资源8| 久久久国产一区二区三区四区小说| 欧美日韩精品免费在线观看视频| 国产黄色片在线观看| 国产精品大尺度| 五月天激情图片| 96av在线| 欧美日韩专区在线| 国产xxxxhd| 神马香蕉久久| 一区二区三区视频免费| 中文字幕电影av| 亚洲二区视频| 国产精品电影久久久久电影网| 在线观看xxxx| 丁香一区二区三区| 欧美精品人人做人人爱视频| 青青青青在线| 亚洲成人激情自拍| 日韩av手机版| www.成人网| 国产亚洲美女久久| 欧美第一页在线观看| 亚洲一级黄色| 国产精品日韩在线| 成人精品在线播放| 久久精品视频在线看| 91xxx视频| 韩国主播福利视频一区二区三区| 欧美人妇做爰xxxⅹ性高电影| 黄色av电影网站| 欧美理论视频| 久久男人的天堂| 亚洲在线视频播放| 91麻豆国产自产在线观看| 曰韩不卡视频| 成人影院大全| 亚洲成人a**站| 国产传媒视频在线| 亚洲一区区二区| 91国产在线播放| а天堂8中文最新版在线官网| 亚洲一区在线观看网站| 91视频这里只有精品| 亚洲精品国产动漫| 欧美日本精品在线| 一级黄色大毛片| 久久久久国色av免费看影院| 99在线免费视频观看| 羞羞视频在线观看一区二区| 亚洲精品日韩在线| 国产乱码久久久久久| 国产一区二区三区免费看| 日韩精品久久一区二区三区| 成人ssswww在线播放| 欧美成人乱码一区二区三区| 在线观看天堂av| 日韩精品乱码av一区二区| 好吊色欧美一区二区三区 | 国产精品亚洲四区在线观看| 亚洲欧美综合v| 中文字幕精品三级久久久| 成人黄色在线网站| 成人免费a级片| 日韩免费一级| 久久国产精品久久久久| 一二三区中文字幕| 国产精品蜜臀av| www.色就是色| 欧美日韩水蜜桃| 国产大片精品免费永久看nba| 天堂在线视频观看| 五月婷婷久久丁香| 在线免费播放av| 国产一区二区三区成人欧美日韩在线观看| 国产精品免费观看高清| 丝袜国产在线| 精品国产自在久精品国产| 久久精品女人毛片国产| 东方欧美亚洲色图在线| 老太脱裤子让老头玩xxxxx| 成人看片黄a免费看视频| 久久免费国产精品1| 免费观看国产精品| 午夜精品久久久| 国产三级视频网站| 久久一二三四| 亚洲视频精品一区| vam成人资源在线观看| 美日韩在线视频| 亚洲春色一区二区三区| 亚洲成a人v欧美综合天堂下载| 69亚洲乱人伦| 免费中文字幕日韩欧美| 先锋影音欧美| 精品国产鲁一鲁****| 欧美激情在线播放| 欧洲天堂在线观看| 欧美视频一区二区在线观看| 日本裸体美女视频| 懂色av中文一区二区三区| 国产妇女馒头高清泬20p多| 亚洲婷婷丁香| 国产在线精品一区免费香蕉| 成人高清免费在线| 亚洲第一在线视频| www.亚洲激情| 亚洲欧美另类综合偷拍| 国产精品九九视频| 日韩av一区二区三区四区| 9999在线观看| 精品欧美午夜寂寞影院| 国产精品高潮粉嫩av| www免费视频观看在线| 日韩av综合网站| 中文字幕一级片| 亚洲国产精品一区二区www | 国内外成人免费激情在线视频| 香蕉久久国产av一区二区| 欧美日韩国产综合一区二区三区| 欧美精品久久久久性色| 久久久精品日韩欧美| 91网址在线观看精品| 欧美专区在线| 男人的天堂视频在线| 天堂日韩电影| 1卡2卡3卡精品视频| 中文在线最新版地址| 久久天堂电影网| 免费在线视频一级不卡| 日韩精品专区在线影院观看| 国产午夜无码视频在线观看| 一区二区三区免费| 成人性生交大片免费看无遮挡aⅴ| 国产成人精品一区二区三区四区 | 亚洲午夜精品一区二区| 国产精品17p| 国产中文字幕日韩| 亚洲精品一区| 久久免费观看视频| av香蕉成人| 中文字幕国产精品久久| 午夜性色福利视频| 日韩欧美你懂的| 中文字幕一区二区在线视频| 亚洲第一久久影院| 日韩福利小视频| 国产女同互慰高潮91漫画| bl动漫在线观看| 成人性视频网站| 日韩av自拍偷拍| 蜜桃传媒麻豆第一区在线观看| 每日在线更新av| 亚洲视频精品| 91精品国产吴梦梦| 天天射成人网| 亚洲日本欧美在线| 日本午夜一区| 奇米888一区二区三区| 亚洲欧美tv| 精品一区二区三区国产| 波多野结衣一区二区三区免费视频| 91亚洲精品久久久久久久久久久久| 秋霞国产精品| 国产精品wwwwww| 精品视频一区二区三区四区五区| 777精品视频| 僵尸再翻生在线观看| 性色av一区二区三区红粉影视| 日本h片在线观看| 久久99精品国产99久久6尤物| 免费在线观看av网站| 日韩在线播放av| 日本激情在线观看| 日韩中文综合网| 天堂地址在线www| 日韩一级裸体免费视频| 日本成人在线播放| 中文字幕亚洲欧美日韩2019| av福利在线播放| 俺去亚洲欧洲欧美日韩| 成人短视频在线| 欧美理论电影在线观看| 欧美人体视频xxxxx| 欧美激情亚洲一区| 忘忧草在线影院两性视频| 日本成人精品在线| 国产精品高清乱码在线观看| 国产精品免费网站| 国产精品免费精品自在线观看| 97netav| 成人在线视频你懂的| 激情小说综合网| 国产伦精品一区二区三区视频| 日韩videos| 91精品91| 午夜免费福利小电影| 性伦欧美刺激片在线观看| 日韩福利视频在线| 精品亚洲国内自在自线福利| 男插女视频网站| 成a人片国产精品| 久久久久久亚洲中文字幕无码| 国产女人18水真多18精品一级做 | 久久久国产精品| 国产女教师bbwbbwbbw| 国产精品婷婷| 伊人网在线综合| 成人午夜碰碰视频| 欧洲av一区二区三区| 亚洲免费在线看| 日本三级午夜理伦三级三| 在线观看日韩av先锋影音电影院| 一级片在线观看视频| 亚洲а∨天堂久久精品9966| 国产精品久久久久久久龚玥菲| 美日韩精品免费视频| 三级在线观看视频| 国产日本欧美一区二区三区在线| 成人h动漫精品一区二区器材| 欧美日韩一区二区三区在线视频 | 欧美肥老妇视频| 国产免费不卡| 97中文在线| 国产传媒欧美日韩成人精品大片| 艳母动漫在线观看| 亚欧成人精品| 日本一区二区三区在线免费观看| 久久久噜噜噜久久人人看 | 亚洲影影院av| 外国成人在线视频| 第九区2中文字幕| 日本不卡视频一二三区| 动漫美女无遮挡免费| 国产精品久久久久久久久久久免费看| 久久精品亚洲无码| 91精品国产全国免费观看| 九色网友自拍视频手机在线| 欧美日韩高清区| 久久天天久久| 欧美精品尤物在线| 亚洲第一黄色| japan高清日本乱xxxxx| 国产精品少妇自拍| 4438国产精品一区二区| 精品福利在线导航| 麻豆视频在线播放| 国产精品视频永久免费播放| 日韩精品导航| 青青草国产免费| 国产一区二区三区四区五区美女| 国产真实乱人偷精品人妻| 五月天亚洲婷婷| 黄片毛片在线看| 欧美xxxx18国产| 精品中文字幕一区二区三区| 亚洲春色在线视频| 日韩制服丝袜先锋影音| 蜜臀av一区二区三区有限公司| 亚洲尤物视频在线| 99国产在线播放| 久久九九亚洲综合| 亚洲成人高清| 一区二区三区偷拍| 免费在线观看视频一区| 夫妇露脸对白88av| 欧美性生活影院| 91涩漫在线观看| 国产精品久久久久久超碰| 久操国产精品| 欧美一级裸体视频| 日本一区二区免费在线| 免费在线不卡av| 中文字幕日韩精品在线观看| 成人看片网页| 亚洲黄色成人久久久| 蜜臀av亚洲一区中文字幕| 欧日韩不卡视频| 欧美日韩国产123区| 女女色综合影院| 91在线免费视频| 欧美一区免费| 国产免费无码一区二区| 亚洲国产成人va在线观看天堂| 亚洲av综合色区无码一二三区| 欧美激情xxxx性bbbb| 风间由美中文字幕在线看视频国产欧美 | 性猛交xxxx| 欧美中文字幕视频在线观看| 欧美人妖在线| 日韩av在线中文| 亚洲免费在线播放| 刘亦菲久久免费一区二区| 91国产精品电影| 国产日韩视频在线| 天堂av手机在线| 亚洲国产成人91porn| 男男激情在线| 国产欧美韩国高清| 国内精品嫩模av私拍在线观看| 久草视频福利在线| 91国产福利在线| 超碰在线最新| 精品国产_亚洲人成在线| 久久综合九色| 三级在线观看免费大全| 精品福利一区二区三区 | 欧美亚洲综合一区| 日本在线视频观看| 国产精品自拍首页| 久久天天综合| 91成人福利视频| 亚洲免费视频网站| 麻豆视频久久| 免费av网址在线| 亚洲欧洲综合另类在线| 日韩精品系列| 91亚洲国产成人久久精品网站| 国产日韩精品视频一区二区三区 | 亚洲一区二区三区精品在线| 天堂在线免费av| 成人精品久久久| 亚洲永久视频| 日韩成人短视频| 亚洲欧美日韩在线高清直播|