1. 程式人生 > >八大排序算法python實現(轉)

八大排序算法python實現(轉)

n) 順序 tails detail 時間 tail 哨兵 插入元素 lang

一、概述

排序有內部排序和外部排序,內部排序是數據記錄在內存中進行排序,而外部排序是因排序的數據很大,一次不能容納全部的排序記錄,在排序過程中需要訪問外存。

我們這裏說說八大排序就是內部排序。

技術分享

當n較大,則應采用時間復雜度為O(nlog2n)的排序方法:快速排序、堆排序或歸並排序序。

快速排序:是目前基於比較的內部排序中被認為是最好的方法,當待排序的關鍵字是隨機分布時,快速排序的平均時間最短;

二、算法實現

1.插入排序—直接插入排序(Straight Insertion Sort)

基本思想:

將一個記錄插入到已排序好的有序表中,從而得到一個新,記錄數增1的有序表。即:先將序列的第1個記錄看成是一個有序的子序列,然後從第2個記錄逐個進行插入,直至整個序列有序為止。

要點:設立哨兵,作為臨時存儲和判斷數組邊界之用。

直接插入排序示例:

技術分享

如果碰見一個和插入元素相等的,那麽插入元素把想插入的元素放在相等元素的後面。所以,相等元素的前後順序沒有改變,從原無序序列出去的順序就是排好序後的順序,所以插入排序是穩定的。

算法的實現:

轉自:http://blog.csdn.net/u013719780/article/details/49201143

八大排序算法python實現(轉)