亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

python計數排序和基數排序算法實例

 更新時間:2014年04月25日 11:50:37   作者:  
這篇文章主要介紹了python計數排序和基數排序算法實例,需要的朋友可以參考下

一、計數排序

計數排序(Counting sort)是一種穩(wěn)定的排序算法

算法的步驟如下:
找出待排序的數組中最大和最小的元素
統計數組中每個值為i的元素出現的次數,存入數組C的第i項
對所有的計數累加(從C中的第一個元素開始,每一項和前一項相加)
反向填充目標數組:將每個元素i放在新數組的第C(i)項,每放一個元素就將C(i)減去1
當輸入的元素是 n 個 0 到 k 之間的整數時,計數排序的時間復雜度為O(N+K),空間復雜度為O(N+K)。當K不是很大時,這是一個很有效的線性排序算法。

以下是測試代碼:

復制代碼 代碼如下:
#-*- coding:utf8 -*-
import random

def jishu(data, max):
    """
    基數排序:當輸入的元素是 n 個 0 到 k 之間的整數時(k不能太大,即max不能太大)
    @param data: 需要排序的數組
    @param max: 最大的數
    """
    result = [None for i in xrange(len(data))]  # 最后的結果
    c = [0 for i in range(max+1)]
    # 用數組c統計每個值=d的元素個數
    for d in data:
        c[d] = c[d] + 1

    # c[i]表示data中值<=i 的元素個數
    for i in range(1, max+1):
        c[i] = c[i] + c[i-1]

    # 在將C中的元素倒著打印出來就是排序好的
    for j in xrange(len(data)-1, -1, -1):
        result[c[data[j]]-1] = data[j]
        c[data[j]] = c[data[j]] – 1

    return result

 

if __name__ == '__main__':

    #制造1000個0到100的數字

    print jishu([random.randint(0, 100) for i in range(1000)], 100)

二、基數排序

基數排序排序(英語:Radix sort)是一種非比較型整數排序算法,其原理是將整數按位數切割成不同的數字,然后按每個位數分別比較。

它是這樣實現的:將所有待比較數值(正整數)統一為同樣的數位長度,數位較短的數前面補零。然后,從最低位開始,依次進行一次排序。這樣從最低位排序一直到最高位排序完成以后, 數列就變成一個有序序列。
基數排序的方式可以采用LSD(Least significant digital)或MSD(Most significant digital),LSD的排序方式由鍵值的最右邊開始,而MSD則相反,由鍵值的最左邊開始。

以下是一個測試用例:

復制代碼 代碼如下:
#-*- coding:utf8 -*-
import random
def jichu(data, length):
    """
    基數排 lsd
    @param data: 需要排列的組合
    @param length: 最大的數據是幾位
    """
    for l in xrange(length):
        s = [[] for i in xrange(10)] 
        for d in data:
            s[d/(10**l) % 10].append(d)
        data = [d for s_list in s for d in s_list]

    return data

 

if __name__ == '__main__':

    list = [random.randint(1, 99999999) for i in xrange(99)]  # 制造99個數據
    print jichu(list, 8)


相關文章

  • 利用Python查看微信共同好友功能的實現代碼

    利用Python查看微信共同好友功能的實現代碼

    這篇文章主要介紹了利用Python查看微信共同好友功能的實現代碼,代碼簡單易懂,非常不錯,具有一定的參考借鑒價值 ,需要的朋友可以參考下
    2019-04-04
  • python實現ip地址查詢經緯度定位詳解

    python實現ip地址查詢經緯度定位詳解

    這篇文章主要介紹了python實現ip地址查詢經緯度定位詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-08-08
  • 卸載tensorflow-cpu重裝tensorflow-gpu操作

    卸載tensorflow-cpu重裝tensorflow-gpu操作

    這篇文章主要介紹了卸載tensorflow-cpu重裝tensorflow-gpu操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • 淺談django url請求與數據庫連接池的共享問題

    淺談django url請求與數據庫連接池的共享問題

    今天小編就為大家分享一篇淺談django url請求與數據庫連接池的共享問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • PyChar學習教程之自定義文件與代碼模板詳解

    PyChar學習教程之自定義文件與代碼模板詳解

    pycharm默認的【新建】文件,格式很不友好,那么就需要改一下文件模板。下面這篇文章主要給大家介紹了關于PyChar學習教程之自定義文件與代碼模板的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友們下面跟著小編來一起看看吧。
    2017-07-07
  • Python selenium抓取虎牙短視頻代碼實例

    Python selenium抓取虎牙短視頻代碼實例

    這篇文章主要介紹了Python selenium抓取虎牙短視頻代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-03-03
  • Python 轉換RGB顏色值的示例代碼

    Python 轉換RGB顏色值的示例代碼

    這篇文章主要介紹了Python 轉換RGB顏色值的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-10-10
  • python發(fā)布模塊的步驟分享

    python發(fā)布模塊的步驟分享

    這篇文章主要介紹了python發(fā)布模塊的步驟,需要的朋友可以參考下
    2014-02-02
  • 使用pyinstaller逆向.pyc文件

    使用pyinstaller逆向.pyc文件

    這篇文章主要介紹了使用pyinstaller逆向.pyc文件,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-12-12
  • Python模板的使用詳細講解

    Python模板的使用詳細講解

    Django 模板是使用 Django 模板語言標記的一個文本文檔或Python字符串。模板引擎可以識別和解釋一些構造。主要是變量和標簽。模板是通過上下文來渲染的。渲染用變量的值替換變量,變量的值在上下文中查找,并執(zhí)行標簽。其他的一切都按原樣輸出
    2022-10-10

最新評論