Python常用算法
時(shí)間:2026-05-05 02:49:54Pyth??on常用算法包括排序、常用搜(′ω`*)索、算法圖算法、常用動(dòng)態(tài)規劃等。算(suan)法
在計算機科學(xué)中,常用算法是算法解決問(wèn)題??的一系列步驟,Python作為一(′?`*)門(mén)廣泛使用的常用編程語(yǔ)言,有許多常用的算法算法可以幫助我們解決各種問(wèn)題,(′▽?zhuān)?本文將??介紹一些Python中常用的常用算法及其實(shí)現。
1、算法冒泡排序
冒泡排序是常用一種簡(jiǎn)單的排序算法,它重復地遍歷要排序的算法數列,一次比較兩個(gè)元素,常用(yong)如果它們的算??法順(◎_◎;)序錯誤就(jiu)把它們??交換過(guò)來(lái),遍歷數列的常用工作是重(zhong)復地進(jìn)(jin)行直到?jīng)]有( ???)再需要交換,也就是說(shuō)該數列已經(jīng)排序完成。
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
2、選擇排序
選擇排序是一種簡(jiǎn)單直(zhi)觀(guān)的排序算法,它的工作原理是每一次從待排序的數據元??素中選出最?。ɑ蜃畲螅┑囊粋€(gè)元素,存放在序列的起始位置,直到全部待排序的數據元素排完。
def?? selection_sort(arr??): for i in range(len(arr)): min_index = i for j in range(i+1, len(arr)): if arr[j] < arr[min_index]: min_index = j arr[i], arr[mi(′▽?zhuān)?n_index] = arr[min_(′▽?zhuān)?index], arr[i] returヽ(′▽?zhuān)?ノn arr
1、線(xiàn)性查找
線(xiàn)性查找是一種簡(jiǎn)單的查找算法,它的基本思想是從數列的第一個(gè)元素開(kāi)始,逐個(gè)檢查每個(gè)元素,直到找到所需的元素為止。
def linear_(′?`)search(arr, x): for i in range(len(arr)): if arr[i] == x: return i return -1
2、二分查找
二分查找是一種高效的查找算法,它要求數據必須是有序的,基本思想是將查找的鍵值與有序數組的中間值進(jìn)行比較,如果相等則返回中間值的下標(//ω//),如果小于中間值則在(zai)左半部分繼續查找,如果大于中間值則在右半部分繼續查找,直到找到為止。
def binary_search(arr, x): low, high = 0, len(arr) 1 while low <??;= high: mid = (low + hi┐(′?`)┌gh) // 2 if arr[mid] == x: return mid elif arr[mid] < x: low = mid + 1 els??e: high = mid 1 return -1
1、深度優(yōu)先搜索(DFS)
深度優(yōu)先搜索是一種用于遍歷或搜索樹(shù)或圖的算法(fa),這個(gè)算法會(huì )盡可能深地搜索樹(shù)的分支,當節點(diǎn)v的所在邊都己被探尋過(guò),搜索將回溯??到??發(fā)現節點(diǎn)v的ヽ(′▽?zhuān)?ノ那條邊的起始節點(diǎn),這一過(guò)程一直進(jìn)行到已發(fā)現從源節點(diǎn)可(ke)達的所有節點(diǎn)為止。
def dfs(graph, start, visited=None): if visited is None: visited = set() visited.add(start) for next_node in graph[start] visited: dfs(graph, next_node, visit??ed) return visited2、廣度優(yōu)先搜索(BFS)
from collections imp(//ω//)o(′?`*)rt dequedef bfs(??grヽ(′▽?zhuān)?ノaph, root): visited = set() queue = deque([root]) while queue??: vertex = queue.po??plef(′_ゝ`)t() if(?????) vertex not in visited: visited.add(vertex) queue.extend(neighbor for neighbor in?? graph[vertex] if neighbor not in visited) return visited
相關(guān)問(wèn)題與解答
1、冒泡排序的時(shí)間復雜度是多少?
答:冒泡排序的時(shí)間復雜度為O(n^2)。
2、二分查找ヾ(′ω`)?適用于什么樣的ヽ(′▽?zhuān)?/數據結構?
答:二分查找適用于有序的數據結構,如(ru)有序數組。
3、深度優(yōu)先搜索和廣度優(yōu)先搜索有(??-)?什么區別?
答:深(shen)度優(yōu)先搜索是盡可能深地搜索樹(shù)的分支,而廣度優(yōu)先搜索是沿著(zhù)樹(shù)的寬度遍歷樹(shù)的節點(diǎn)。
4、選擇??排序的原理是什么?
答:選擇排序的工作原理是在每一輪中選出最小的元素,然后將其放到正確的位置。
客服電話(huà)15318911309
Copyright ? 2012-2018 天津九安特機電工程有限公司 版權所有 備案號:
客服電話(huà)18076342571