精品欧美一区二区三区在线观看 _久久久久国色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级探花| 丁香六月激情网| 欧美亚洲精品在线观看| 日韩一级欧洲| 亚洲人精选亚洲人成在线| 一区二区三区国产免费| 国产美女av在线| 成熟亚洲日本毛茸茸凸凹| 97热精品视频官网| 我不卡一区二区| 国产一区二区三区黄网站| 亚洲成av人片在线观看| 青青草成人网| 国内精品久久久久久久久久| 亚洲精品综合| 最近免费中文字幕视频2019| 无套白嫩进入乌克兰美女| 男人av在线播放| 国产精品美日韩| 国产精品一区在线播放| 久久久999久久久| 黄色av日韩| 中文字幕亚洲无线码a| 亚洲国产精品第一页| 午夜精品成人av| 亚洲激情男女视频| 欧美性大战久久久久| 国产成人精品毛片| 日本午夜一本久久久综合| 久99久在线视频| 国产精品扒开腿做爽爽爽a片唱戏 亚洲av成人精品一区二区三区 | 一级毛片视频在线| 国产精品自拍三区| 国产成人免费av| 黄色小说在线观看视频| 日本不卡高清| 亚洲男人的天堂在线| 粗大的内捧猛烈进出视频| 91tv亚洲精品香蕉国产一区| 亚洲美女区一区| 日韩高清av电影| 色呦呦视频在线| 国产一区二区三区日韩| 国产精品日韩电影| 久久夜色精品国产噜噜亚洲av| 亚洲精品成人影院| 中文字幕日韩免费视频| 精品国产aⅴ一区二区三区东京热| 日韩欧美少妇| 樱花影视一区二区| 日韩最新中文字幕| 国产精品久久麻豆| 日本一区二区动态图| 美女黄毛**国产精品啪啪| 亚洲奶汁xxxx哺乳期| 国产一区二区日韩精品| 国产欧美一区二区三区久久人妖| 无码人妻一区二区三区免费| 亚洲理伦在线| 韩国v欧美v日本v亚洲| 国产麻豆a毛片| 成人羞羞在线观看网站| 亚洲码在线观看| 制服丝袜第二页| 91在线一区| 精品乱人伦小说| 激情综合激情五月| 激情小说一区| 亚洲第一网中文字幕| 亚洲精品乱码久久久久久蜜桃欧美| 国产色99精品9i| 日韩欧美电影一二三| 免费人成视频在线播放| 自拍偷拍亚洲| 精品人在线二区三区| 热久久99这里有精品| 亚洲白虎美女被爆操| 成人日韩在线视频| 91精品国产自产观看在线| 欧美日韩极品在线观看一区| 天天干天天草天天| 亚洲三级电影| 日韩免费观看高清完整版 | 日本天堂影院在线视频| 国产精品一二三区| 国产伦精品一区二区三区高清版| 亚洲av综合色区无码一二三区| 国产乱子伦视频一区二区三区 | 中文字幕理论片| 精品一区二区综合| 成人自拍爱视频| 日本啊v在线| 中文字幕不卡在线| 久操手机在线视频| 在线天堂资源www在线污| 色哟哟在线观看一区二区三区| 国产一级不卡毛片| 四虎精品永久免费| 日韩一区二区电影网| 女性生殖扒开酷刑vk| 免费精品国产| 日韩在线观看免费全| 久久久久亚洲av成人片| 国产精品一级| 91久久在线观看| 天天干天天舔天天射| 国产精品看片你懂得| 少妇熟女一区二区| 久久青草伊人| 欧美乱妇一区二区三区不卡视频| 精品伦一区二区三区| 国模精品一区| 中文字幕亚洲欧美一区二区三区| 欧美人与禽zozzo禽性配| 午夜在线播放视频欧美| 国产日韩专区在线| 男人天堂综合| 亚洲影视在线观看| 亚洲欧洲日本精品| 国产成人在线中文字幕| 中文字幕亚洲在线| 日韩精品一区二区三| 亚洲免费网址| 97se亚洲综合| 成人高清免费观看mv| 亚洲v日本v欧美v久久精品| 五月天激情视频在线观看| 波多野结衣在线一区二区| 中文字幕亚洲字幕| 欧美成人精品网站| 国产午夜精品一区二区三区嫩草| 欧美 国产 综合| 国产精品毛片久久久| 欧美大尺度在线观看| 国产精品人妻一区二区三区| 欧美高清在线视频| 午夜在线观看av| 狠狠色狠狠色综合婷婷tag| 欧美中文字幕在线播放| 五月天婷婷在线播放| 亚洲高清免费一级二级三级| 伦伦影院午夜理论片| 亚洲成人日韩| 2014亚洲精品| 欧美另类tv| 亚洲а∨天堂久久精品9966 | 福利在线观看| 欧美性大战久久久久久久| 日本美女xxx| 蜜臀av一区二区| 亚洲一卡二卡区| 婷婷丁香久久| 精品视频9999| 日韩一卡二卡在线| 欧美视频第一页| 第一次破处视频| 欧美a级理论片| 爱爱爱视频网站| 日韩一区网站| 午夜精品久久久久久久99热| 四虎国产精品永远| 在线精品亚洲一区二区不卡| 天天舔天天操天天干| 激情综合一区二区三区| 欧美中文字幕在线观看视频| 9l视频自拍九色9l视频成人| 国产91精品高潮白浆喷水| 欧美日韩视频精品二区| 在线中文字幕一区二区| 香蕉成人在线视频| 国产91精品久久久久久久网曝门| 国产欧美日韩网站| 久久不见久久见国语| 国产日韩一区在线| brazzers在线观看| 伊人激情综合网| 99热这里只有精品66| 性久久久久久久久| 2019男人天堂| 成人自拍视频在线| 无码少妇一区二区三区芒果| 亚洲国产精品成人| 久久国产日韩欧美| 中文成人在线| 清纯唯美日韩制服另类| 欧美黄色激情| 精品亚洲一区二区三区在线观看 | 精品无码一区二区三区蜜臀| 国产一区二区三区久久久 | 久久国产生活片100| 福利在线一区二区| 日本不卡二三区| 国产伦一区二区三区色一情| 日韩免费小视频| 国产+成+人+亚洲欧洲| 成人亚洲性情网站www在线观看| 日韩一区二区在线看片| av片免费观看| 亚洲一区在线观看网站| 国产精品酒店视频| 91伊人久久大香线蕉| 一个人看的视频www| 视频一区免费在线观看| 美女黄色免费看| 日韩影院二区| 国产二区一区| 爱情电影网av一区二区| 国产成人精品av在线| 国产探花视频在线观看| 北条麻妃一区二区三区中文字幕 | 国产免费av一区| 18成人在线视频| 国产又大又粗又爽的毛片| 国产风韵犹存在线视精品| 久久精品午夜福利| 日韩亚洲精品在线| 日本人妻伦在线中文字幕| 欧美xxxx中国| 日本午夜精品电影| 亚洲福利网站| 国产一区在线观| 综合激情久久| **亚洲第一综合导航网站| 国产精品亚洲成在人线| 国产精品91在线观看| 中文字幕色婷婷在线视频| 久久久久免费视频| 免费电影网站在线视频观看福利| 久久久国产成人精品| 成人高清网站| 在线成人中文字幕| 岛国最新视频免费在线观看| 精品处破学生在线二十三| 99热这里只有精品3| 91精品国产综合久久久蜜臀图片 | 久久精品国产秦先生| 成人亚洲视频在线观看| 免费永久网站黄欧美| 国产成人亚洲综合无码| 综合亚洲视频| 路边理发店露脸熟妇泻火| 97精品中文字幕| 一区二区三区国| sdde在线播放一区二区| 日韩高清av| 日韩欧美一区二区三区免费看| 日韩精品欧美在线| 成人情趣视频| 中文字幕日韩一区二区三区 | 亚洲国产岛国毛片在线| 日本污视频网站| 中文幕一区二区三区久久蜜桃| 2019男人天堂| 亚洲精品国产一区二区精华液| 黄色一级片在线免费观看| 亚洲国产精品久久人人爱| 久视频在线观看| 精品欧美国产一区二区三区| 区一区二在线观看| 欧美视频精品在线观看| 亚洲无码精品在线观看| 3d成人h动漫网站入口| 在线免费观看一区二区| 3atv一区二区三区| 人人妻人人澡人人爽久久av | 成视频免费观看在线看| 欧美国产日本高清在线| 成人免费观看在线观看| 国产97免费视| 96sao精品免费视频观看| 成人免费在线一区二区三区| 成人偷拍自拍| 日韩久久精品一区二区三区| 亚洲精品a级片| 国产精品久久中文字幕| 日本欧美大码aⅴ在线播放| 国产精品999.| 91久色porny| 亚洲人与黑人屁股眼交| 午夜国产精品一区| 一本色道久久综合精品婷婷| 精品精品国产高清a毛片牛牛 | 97在线国产视频| 久久不射中文字幕| 中文字幕永久有效| 成人a区在线观看| 国产无遮挡在线观看| 一个色综合av| 最近中文字幕在线观看| 欧美v日韩v国产v| 岛国最新视频免费在线观看| 超碰日本道色综合久久综合| 成入视频在线观看| 91精品在线国产| 妖精一区二区三区精品视频| 中国一级大黄大黄大色毛片| 99精品欧美| 免费观看黄网站| 国产精品视频九色porn| 精品91久久久| 日韩欧美中文字幕一区| av中文字幕在线| 51色欧美片视频在线观看| 成人日韩视频| 亚洲欧洲精品一区| 国产精品日韩| 少妇极品熟妇人妻无码| 国产精品国产三级国产aⅴ无密码| av大片免费观看| 精品国产一区二区精华| 国内外激情在线| 国产成人一区二区在线| 欧美18免费视频| www.成年人视频| 国产一区二区三区免费看| 欧美aaa级片| 欧美综合天天夜夜久久| 五月天激情婷婷| 久久露脸国产精品| 日韩精品一区国产| 97超碰人人爱| 久久99国产乱子伦精品免费| 小早川怜子久久精品中文字幕| 亚洲午夜久久久久中文字幕久| 国产精品久久777777换脸| 亚洲无av在线中文字幕| 成人影院网站| 欧美 日韩 国产在线| 国产精品美女| 在线免费观看成年人视频| 亚洲午夜久久久久久久久久久 | 亚洲日本韩国在线| 亚洲第一精品福利| 丁香花在线电影| 豆国产97在线| 激情久久婷婷| 国产成人av片| 亚洲国产美国国产综合一区二区| 亚洲AV无码一区二区三区性| 欧美日韩福利电影| 97品白浆高清久久久久久 | 日韩在线卡一卡二| 亚洲黄色小说视频| 欧美日韩中文字幕一区| 在线观看免费黄色| 国产精品羞羞答答| 婷婷中文字幕一区| 在线观看欧美一区二区| 亚洲一区二区综合| 污视频网站在线播放| 91精品国产91久久久久久吃药| 日本国产精品| 日韩有码免费视频| 国产精品久久久久久妇女6080 | 亚洲国产天堂网精品网站| 182在线视频观看| 女同一区二区| 美女视频第一区二区三区免费观看网站 | aaa人片在线| 亚洲一区第一页| 粉嫩av国产一区二区三区| 日韩成人三级视频| 91影院在线观看| 亚洲一级片免费看| 欧美日韩成人在线视频| 亚洲欧洲色图| 亚洲这里只有精品| 亚洲资源在线观看| 噜噜噜在线观看播放视频| 国产日韩精品在线观看| 亚洲午夜电影| 久久亚洲AV无码专区成人国产| 欧美久久久久中文字幕| 任你弄在线视频免费观看| 蜜桃日韩视频| 久久99国产精品久久| 国产午夜视频在线| 伊人精品在线观看| 成人春色在线观看免费网站| 色婷婷综合久久久久中文字幕| 中文字幕一区二区三| 免费观看黄色一级视频| 国产精品都在这里| 伊人久久婷婷| 国产精品久久久视频| 亚洲精品一线二线三线| 先锋欧美三级| 欧美激情视频免费看| 国产精品久久毛片| 无码国产精品一区二区色情男同| 国产精品丝袜高跟| 亚洲免费播放| 农村妇女精品一区二区| 亚洲天堂色网站| 99久久婷婷国产综合精品青牛牛 | 成人国产在线| 韩日视频在线观看| 一区在线播放视频|