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

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

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

1. 冒泡排序(Bubble Sort)

基本思想:重復地遍歷待排序的數列,每次比較相鄰的兩個元素,如果它們的順序錯誤就交換位置,直到沒有需要交換的元素為止。

實現(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)

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

實現(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ū)間為空為止。

實現(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)

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

實現(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)

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

相關文章

  • Python實現(xiàn)獲取漢字偏旁部首的方法示例【測試可用】

    Python實現(xiàn)獲取漢字偏旁部首的方法示例【測試可用】

    這篇文章主要介紹了Python實現(xiàn)獲取漢字偏旁部首的方法,涉及Python基于第三方模塊進行漢字處理的相關操作技巧,需要的朋友可以參考下
    2018-12-12
  • Python Gitlab Api 使用方法

    Python Gitlab Api 使用方法

    今天小編就為大家分享一篇Python Gitlab Api 使用方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • Python判斷素數的3種方法及for-else語句的用法介紹

    Python判斷素數的3種方法及for-else語句的用法介紹

    素數又叫質數,指的是>1的整數中,只能被1和這個數本身整除的數,這篇文章主要給大家介紹了關于Python判斷素數的3種方法及for-else語句的用法介紹的相關資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-05-05
  • 用python查找統(tǒng)一局域網下ip對應的mac地址

    用python查找統(tǒng)一局域網下ip對應的mac地址

    這篇文章主要介紹了用python查找統(tǒng)一局域網下ip對應的mac地址的示例代碼,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2021-01-01
  • Python使用scipy進行曲線擬合的方法實例

    Python使用scipy進行曲線擬合的方法實例

    這篇文章主要給大家介紹了關于Python使用scipy進行曲線擬合的相關資料,Scipy優(yōu)化和擬合采用的是optimize模塊,該模塊提供了函數最小值(標量或多維)、曲線擬合和尋找等式的根的有用算法,需要的朋友可以參考下
    2022-05-05
  • python自動化測試之破解滑動驗證碼

    python自動化測試之破解滑動驗證碼

    這篇文章介紹了python自動化破解之破解滑動驗證碼的解決方案,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-07-07
  • CoordConv實現(xiàn)卷積加上坐標實例詳解

    CoordConv實現(xiàn)卷積加上坐標實例詳解

    這篇文章主要介紹了CoordConv實現(xiàn)卷積加上坐標實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-03-03
  • PyTorch梯度裁剪避免訓練loss nan的操作

    PyTorch梯度裁剪避免訓練loss nan的操作

    這篇文章主要介紹了PyTorch梯度裁剪避免訓練loss nan的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • 為何你的Python代碼在Notepad++中只閃現(xiàn)一下就消失無蹤?

    為何你的Python代碼在Notepad++中只閃現(xiàn)一下就消失無蹤?

    你是否曾在Notepad++中運行編寫的Python代碼,卻發(fā)現(xiàn)它們瞬間消失無蹤?別擔心,這不是你的幻覺,在這篇指南中,我們將揭秘這一現(xiàn)象背后的原因,并教你如何輕松解決,讓我們一起揭開這個謎團,讓你的Python代碼在Notepad++中安然無恙吧!
    2024-02-02
  • Django框架使用富文本編輯器Uedit的方法分析

    Django框架使用富文本編輯器Uedit的方法分析

    這篇文章主要介紹了Django框架使用富文本編輯器Uedit的方法,結合實例形式分析了Django框架中使用Uedit的安裝、配置方法及Uedit相關插件制作方法,需要的朋友可以參考下
    2018-07-07

最新評論

体育| 桂东县| 阿图什市| 巴青县| 曲水县| 河源市| 鞍山市| 县级市| 新乡县| 蒙阴县| 常德市| 广州市| 从化市| 高尔夫| 楚雄市| 集贤县| 历史| 台安县| 湄潭县| 乐昌市| 景东| 襄垣县| 阿拉善左旗| 宜昌市| 北京市| 会泽县| 渭源县| 工布江达县| 伊金霍洛旗| 汶上县| 阳泉市| 察雅县| 昌都县| 石城县| 军事| 蕉岭县| 正阳县| 横峰县| 蒙城县| 许昌市| 枝江市|