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

溫馨提示×

溫馨提示×

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

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

Python高級數據結構與算法實例分析

發布時間:2023-05-09 15:38:02 來源:億速云 閱讀:132 作者:iii 欄目:開發技術

本文小編為大家詳細介紹“Python高級數據結構與算法實例分析”,內容詳細,步驟清晰,細節處理妥當,希望這篇“Python高級數據結構與算法實例分析”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。

    一、簡介

    我們將從以下幾個方面來展開本文的內容:

    棧(Stack)

    隊列(Queue)

    鏈表(Linked List)

    堆(Heap)

    排序算法(Sorting Algorithms)

    查找算法(Searching Algorithms)

    二、棧(Stack)

    棧是一種后進先出(LIFO)的數據結構,只允許在棧頂進行插入和刪除操作。在Python中,我們可以使用列表(list)實現棧。

    class Stack:
        def __init__(self):
            self.items = []
     
        def push(self, item):
            self.items.append(item)
     
        def pop(self):
            if not self.is_empty():
                return self.items.pop()
     
        def peek(self):
            if not self.is_empty():
                return self.items[-1]
     
        def is_empty(self):
            return len(self.items) == 0
     
        def size(self):
            return len(self.items)

    三、隊列(Queue)

    隊列是一種先進先出(FIFO)的數據結構,只允許在隊尾進行插入操作,而在隊頭進行刪除操作。在Python中,我們可以使用collections模塊中的deque類實現隊列。

    from collections import deque
     
    class Queue:
        def __init__(self):
            self.items = deque()
     
        def enqueue(self, item):
            self.items.append(item)
     
        def dequeue(self):
            if not self.is_empty():
                return self.items.popleft()
     
        def is_empty(self):
            return len(self.items) == 0
     
        def size(self):
            return len(self.items)
                previous.next = current.next
        else:
            raise ValueError("Data not found in the list")

    四、堆(Heap)

    堆是一種特殊的完全二叉樹,它的每個節點都大于等于(最大堆)或小于等于(最小堆)其子節點。在Python中,我們可以使用heapq庫實現堆。

    import heapq
     
    class MaxHeap:
        def __init__(self):
            self.items = []
     
        def push(self, item):
            heapq.heappush(self.items, -item)
     
        def pop(self):
            return -heapq.heappop(self.items)
     
        def peek(self):
            return -self.items[0]
     
        def is_empty(self):
            return len(self.items) == 0
     
        def size(self):
            return len(self.items)

    五、排序算法(Sorting Algorithms)

    1. 冒泡排序(Bubble Sort)

    冒泡排序是一種簡單的排序算法,通過重復遍歷列表,比較相鄰元素并交換不正確的順序。

     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]

    2. 選擇排序(Selection Sort)

    選擇排序是一種簡單的排序算法,每次遍歷列表找到最小(或最大)的元素,將其放到正確的位置。

    def selection_sort(arr):
        n = len(arr)
        for i in range(n):
            min_index = i
            for j in range(i + 1, n):
                if arr[j] < arr[min_index]:
                    min_index = j
            arr[i], arr[min_index] = arr[min_index], arr[i]

    3. 插入排序(Insertion Sort)

    插入排序是一種簡單的排序算法,將未排序的元素逐個插入已排序的序列中。

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

    六、查找算法(Searching Algorithms)

    1. 順序查找(Sequential Search)

    順序查找是一種簡單的查找算法,通過遍歷列表,逐個比較元素來查找目標值。

    def sequential_search(arr, target):
        for i in range(len(arr)):
            if arr[i] == target:
                return i
        return -1

    2. 二分查找(Binary Search)

    二分查找是一種高效的查找算法,要求列表已排序。每次查找都將范圍縮小一半,直到找到目標值。

    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

    讀到這里,這篇“Python高級數據結構與算法實例分析”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。

    向AI問一下細節

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

    AI

    汾阳市| 荃湾区| 法库县| 玉屏| 出国| 英吉沙县| 长治县| 合作市| 阿坝县| 柳江县| 海阳市| 西乌| 安陆市| 无锡市| 洛隆县| 松溪县| 乡城县| 社会| 绥滨县| 新田县| 吐鲁番市| 崇明县| 防城港市| 高陵县| 新龙县| 子洲县| 西藏| 兴安盟| 伊金霍洛旗| 四平市| 蛟河市| 木里| 南溪县| 武陟县| 普兰店市| 恭城| 柘荣县| 财经| 东宁县| 哈密市| 呼伦贝尔市|