最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python常用的各種排序算法原理與實(shí)現(xiàn)方法小結(jié)

 更新時(shí)間:2023年04月25日 09:07:00   投稿:shichen2014  
這篇文章主要介紹了python常用的各種排序算法原理與實(shí)現(xiàn)方法,結(jié)合實(shí)例形式總結(jié)分析了冒泡排序、插入排序、選擇排序、快速排序等排序算法的相關(guān)原理與實(shí)現(xiàn)方法,需要的朋友可以參考下

1. 冒泡排序(Bubble Sort)

基本思想:重復(fù)地遍歷待排序的數(shù)列,每次比較相鄰的兩個(gè)元素,如果它們的順序錯(cuò)誤就交換位置,直到?jīng)]有需要交換的元素為止。

實(shí)現(xiàn)代碼:

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

2. 插入排序(Insertion Sort)

基本思想:將數(shù)組分為已排序區(qū)間和未排序區(qū)間,每次從未排序區(qū)間選擇一個(gè)元素,插入到已排序區(qū)間中的合適位置,直到未排序區(qū)間為空為止。

實(shí)現(xiàn)代碼:

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

3. 選擇排序(Selection Sort)

基本思想:每次從未排序區(qū)間選擇最小的元素,放入已排序區(qū)間末尾,直到未排序區(qū)間為空為止。

實(shí)現(xiàn)代碼:

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

4. 快速排序(Quick Sort)

基本思想:選定一個(gè)pivot,將數(shù)組分成左右兩個(gè)部分,使得左邊部分中的元素都小于pivot,右邊部分中的元素都大于pivot。然后對(duì)左右兩個(gè)部分遞歸地進(jìn)行快排。

實(shí)現(xiàn)代碼:

def quick_sort(arr):
? ? if len(arr) <= 1:
? ? ? ? return arr
? ? pivot = arr[0]
? ? left, right = [], []
? ? for x in arr[1:]:
? ? ? ? if x < pivot:
? ? ? ? ? ? left.append(x)
? ? ? ? else:
? ? ? ? ? ? right.append(x)
? ? return quick_sort(left) + [pivot] + quick_sort(right)

雖然這些算法都是常見的排序算法,但在實(shí)際應(yīng)用中,不同算法的性能會(huì)因數(shù)據(jù)規(guī)模、數(shù)據(jù)分布等因素而有所不同,需要具體問題具體分析,選擇合適的算法來解決。

相關(guān)文章

最新評(píng)論

河北省| 新建县| 河北省| 璧山县| 苍南县| 莱阳市| 万源市| 通江县| 西充县| 广安市| 孝感市| 孟州市| 上饶县| 冕宁县| 兴宁市| 九寨沟县| 黄大仙区| 左权县| 河北区| 商洛市| 潼关县| 志丹县| 铅山县| 司法| 温宿县| 措勤县| 新密市| 太仆寺旗| 昌江| 大悟县| 阿图什市| 敖汉旗| 砚山县| 崇义县| 新和县| 苏州市| 庆阳市| 普兰店市| 仁怀市| 马鞍山市| 小金县|