欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

1. 冒泡排序(Bubble Sort)

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

實現(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ū)間選擇一個元素,插入到已排序區(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,將數(shù)組分成左右兩個部分,使得左邊部分中的元素都小于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)

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

相關(guān)文章

  • 使用IronPython把Python腳本集成到.NET程序中的教程

    使用IronPython把Python腳本集成到.NET程序中的教程

    這篇文章主要介紹了使用IronPython把Python腳本集成到.NET程序中的教程,現(xiàn)在剛剛被微軟開源的.NET重新成為業(yè)界熱點、本文介紹了使Python和.NET交互的IronPython,需要的朋友可以參考下
    2015-03-03
  • Python操作SQLite數(shù)據(jù)庫過程解析

    Python操作SQLite數(shù)據(jù)庫過程解析

    這篇文章主要介紹了Python操作SQLite數(shù)據(jù)庫過程解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-09-09
  • Python實現(xiàn)TOPSIS分析法的示例代碼

    Python實現(xiàn)TOPSIS分析法的示例代碼

    TOPSIS法是一種常用的綜合評價方法,其能充分利用原始數(shù)據(jù)的信息,其結(jié)果能精確反應(yīng)各評價方案之間的差距。本文將利用Python實現(xiàn)這一方法,感興趣的可以了解一下
    2023-02-02
  • Jupyter Notebook內(nèi)使用argparse報錯的解決方案

    Jupyter Notebook內(nèi)使用argparse報錯的解決方案

    這篇文章主要介紹了在Jupyter Notebook內(nèi)使用argparse報錯的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • 為什么是 Python -m

    為什么是 Python -m

    這篇文章給大家介紹了Python -m的含義及python -m 和 python 的區(qū)別解析,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2020-06-06
  • python實現(xiàn)比較兩段文本不同之處的方法

    python實現(xiàn)比較兩段文本不同之處的方法

    這篇文章主要介紹了python實現(xiàn)比較兩段文本不同之處的方法,涉及Python針對文本與字符串的相關(guān)操作技巧,需要的朋友可以參考下
    2015-05-05
  • Python中SQLite數(shù)據(jù)庫的使用

    Python中SQLite數(shù)據(jù)庫的使用

    SQLite是一種輕型關(guān)系型數(shù)據(jù)庫,常用于嵌入式設(shè)備和移動應(yīng)用中。Python中內(nèi)置了SQLite模塊,可用于連接和操作SQLite數(shù)據(jù)庫。通過Python SQLite模塊,可以方便地創(chuàng)建、查詢和修改數(shù)據(jù)庫中的數(shù)據(jù),支持事務(wù)處理和數(shù)據(jù)庫操作的原子性保證
    2023-04-04
  • Python?切片為什么不會索引越界?

    Python?切片為什么不會索引越界?

    這篇文章主要介紹了Python?切片為什么不會索引越界?切片(slice)是?Python?中一種很有特色的特性,在正式開始之前,我們先來從關(guān)于切片的相關(guān)知識開始介紹,感興趣的小伙伴一起參考參考呀</P><P>
    2021-12-12
  • python實現(xiàn)logistic分類算法代碼

    python實現(xiàn)logistic分類算法代碼

    今天小編就為大家分享一篇python實現(xiàn)logistic分類算法代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • Scrapy抓取京東商品、豆瓣電影及代碼分享

    Scrapy抓取京東商品、豆瓣電影及代碼分享

    Scrapy,Python開發(fā)的一個快速、高層次的屏幕抓取和web抓取框架,用于抓取web站點并從頁面中提取結(jié)構(gòu)化的數(shù)據(jù)。Scrapy用途廣泛,可以用于數(shù)據(jù)挖掘、監(jiān)測和自動化測試。
    2017-11-11

最新評論