'用Python 3實現快速排序和插入排序代碼詳解 '

"

今天用Python 3版本實現快速排序和插入排序。先對Python語言做個簡單介紹。

Python是一種解釋型、面向對象、動態數據類型的高級程序設計語言。Python由Guido van Rossum於1989年底發明,第一個公開發行版發行於1991年。Python 源代碼同樣遵循 GPL(GNU General Public License)協議。

Python的3.0版本,常被稱為Python 3000,或簡稱Py3k。相對於Python的早期版本,這是一個較大的升級。為了不帶入過多的累贅,Python 3.0在設計的時候沒有考慮向下兼容。

快速排序使用分治法策略來把一個序列(list)分為較小和較大的2個子序列,然後遞歸地排序兩個子序列。

步驟為:

  • 挑選基準值:從數列中挑出一個元素,稱為"基準"(pivot);
  • 分割:重新排序數列,所有比基準值小的元素擺放在基準前面,所有比基準值大的元素擺在基準後面(與基準值相等的數可以到任何一邊)。在這個分割結束之後,對基準值的排序就已經完成;
  • 遞歸排序子序列:遞歸地將小於基準值元素的子序列和大於基準值元素的子序列排序。

遞歸到最底部的判斷條件是數列的大小是零或一,此時該數列顯然已經有序。選取基準值有數種具體方法,此選取方法對排序的時間性能有決定性影響。

以下為git動圖解析:

Python資源共享群:626017123

"

今天用Python 3版本實現快速排序和插入排序。先對Python語言做個簡單介紹。

Python是一種解釋型、面向對象、動態數據類型的高級程序設計語言。Python由Guido van Rossum於1989年底發明,第一個公開發行版發行於1991年。Python 源代碼同樣遵循 GPL(GNU General Public License)協議。

Python的3.0版本,常被稱為Python 3000,或簡稱Py3k。相對於Python的早期版本,這是一個較大的升級。為了不帶入過多的累贅,Python 3.0在設計的時候沒有考慮向下兼容。

快速排序使用分治法策略來把一個序列(list)分為較小和較大的2個子序列,然後遞歸地排序兩個子序列。

步驟為:

  • 挑選基準值:從數列中挑出一個元素,稱為"基準"(pivot);
  • 分割:重新排序數列,所有比基準值小的元素擺放在基準前面,所有比基準值大的元素擺在基準後面(與基準值相等的數可以到任何一邊)。在這個分割結束之後,對基準值的排序就已經完成;
  • 遞歸排序子序列:遞歸地將小於基準值元素的子序列和大於基準值元素的子序列排序。

遞歸到最底部的判斷條件是數列的大小是零或一,此時該數列顯然已經有序。選取基準值有數種具體方法,此選取方法對排序的時間性能有決定性影響。

以下為git動圖解析:

Python資源共享群:626017123

用Python 3實現快速排序和插入排序代碼詳解

實例代碼:


def partition(arr,low,high): i = ( low-1 ) # 最小元素索引 pivot = arr[high] for j in range(low , high): # 當前元素小於或等於 pivot if arr[j] <= pivot: i = i+1 arr[i],arr[j] = arr[j],arr[i] arr[i+1],arr[high] = arr[high],arr[i+1] return ( i+1 ) # arr[] --> 排序數組# low --> 起始索引# high --> 結束索引 # 快速排序函數def quickSort(arr,low,high): if low < high: pi = partition(arr,low,high) quickSort(arr, low, pi-1) quickSort(arr, pi+1, high) arr = [10, 7, 8, 9, 1, 5] n = len(arr) quickSort(arr,0,n-1) print ("排序後的數組:") for i in range(n): print ("%d" %arr[i]),

執行以上代碼輸出結果為:


排序後的數組:1578910

插入排序是一種簡單直觀的排序算法。它的工作原理是通過構建有序序列,對於未排序數據,在已排序序列中從後向前掃描,找到相應位置並插入。

實例代碼:


def insertionSort(arr): for i in range(1, len(arr)): key = arr[i] j = i-1 while j >=0 and key < arr[j] : arr[j+1] = arr[j] j -= 1 arr[j+1] = key arr = [12, 11, 13, 5, 6] insertionSort(arr) print ("排序後的數組:") for i in range(len(arr)): print ("%d" %arr[i])

執行代碼輸出結果:


排序後的數組:56111213

以上就是用Python 3實現快速排序和插入排序的代碼詳解,不僅的對於Python編程語言,大部分編程語言的基礎語法和數據結構,算法排序的學習都很枯燥,也相當不好理解,但是這些又對我們編程的學習至關重要,是必須打好的基礎功底,對以後的深入Python項目實戰學習很重要。在我們Python和人工智能社區,一起更好的學習Python編程,擁抱人工智能!

"

相關推薦

推薦中...