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

python計(jì)數(shù)排序和基數(shù)排序算法實(shí)例

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

一、計(jì)數(shù)排序

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

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

以下是測(cè)試代碼:

復(fù)制代碼 代碼如下:
#-*- coding:utf8 -*-
import random

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

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

    # 在將C中的元素倒著打印出來(lái)就是排序好的
    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個(gè)0到100的數(shù)字

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

二、基數(shù)排序

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

它是這樣實(shí)現(xiàn)的:將所有待比較數(shù)值(正整數(shù))統(tǒng)一為同樣的數(shù)位長(zhǎng)度,數(shù)位較短的數(shù)前面補(bǔ)零。然后,從最低位開(kāi)始,依次進(jìn)行一次排序。這樣從最低位排序一直到最高位排序完成以后, 數(shù)列就變成一個(gè)有序序列。
基數(shù)排序的方式可以采用LSD(Least significant digital)或MSD(Most significant digital),LSD的排序方式由鍵值的最右邊開(kāi)始,而MSD則相反,由鍵值的最左邊開(kāi)始。

以下是一個(gè)測(cè)試用例:

復(fù)制代碼 代碼如下:
#-*- coding:utf8 -*-
import random
def jichu(data, length):
    """
    基數(shù)排 lsd
    @param data: 需要排列的組合
    @param length: 最大的數(shù)據(jù)是幾位
    """
    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個(gè)數(shù)據(jù)
    print jichu(list, 8)


相關(guān)文章

  • python報(bào)錯(cuò): ''list'' object has no attribute ''shape''的解決

    python報(bào)錯(cuò): ''list'' object has no attribute ''shape''的解決

    這篇文章主要介紹了python報(bào)錯(cuò): 'list' object has no attribute 'shape'的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-07-07
  • 利用Python實(shí)時(shí)獲取steam特惠游戲數(shù)據(jù)

    利用Python實(shí)時(shí)獲取steam特惠游戲數(shù)據(jù)

    Steam是由美國(guó)電子游戲商Valve于2003年9月12日推出的數(shù)字發(fā)行平臺(tái),被認(rèn)為是計(jì)算機(jī)游戲界最大的數(shù)碼發(fā)行平臺(tái)之一。本文將利用Python實(shí)時(shí)獲取steam特惠游戲數(shù)據(jù),感興趣的可以嘗試一下
    2022-06-06
  • Python+OpenCV檢測(cè)燈光亮點(diǎn)的實(shí)現(xiàn)方法

    Python+OpenCV檢測(cè)燈光亮點(diǎn)的實(shí)現(xiàn)方法

    這篇文章主要介紹了Python+OpenCV檢測(cè)燈光亮點(diǎn)的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • python獲得圖片base64編碼示例

    python獲得圖片base64編碼示例

    這篇文章主要介紹了用python語(yǔ)言獲得圖片的Base64編碼的示例,大家參考使用吧
    2014-01-01
  • Python發(fā)送郵件的實(shí)例代碼講解

    Python發(fā)送郵件的實(shí)例代碼講解

    在本篇文章里小編給大家整理的是關(guān)于Python發(fā)送郵件的實(shí)例代碼講解內(nèi)容,需要的朋友們可以參考下。
    2019-10-10
  • Python 多進(jìn)程、多線程效率對(duì)比

    Python 多進(jìn)程、多線程效率對(duì)比

    這篇文章主要介紹了Python 多進(jìn)程、多線程的效率對(duì)比,幫助大家選擇適合的技術(shù),感興趣的朋友可以了解下
    2020-11-11
  • Python爬蟲(chóng)中urllib3與urllib的區(qū)別是什么

    Python爬蟲(chóng)中urllib3與urllib的區(qū)別是什么

    Urllib3是一個(gè)功能強(qiáng)大,條理清晰,用于HTTP客戶(hù)端的Python庫(kù)。那么Python爬蟲(chóng)中urllib3與urllib的區(qū)別是什么,本文就詳細(xì)的來(lái)介紹一下
    2021-07-07
  • python matplotlib實(shí)現(xiàn)雙Y軸的實(shí)例

    python matplotlib實(shí)現(xiàn)雙Y軸的實(shí)例

    今天小編就為大家分享一篇python matplotlib實(shí)現(xiàn)雙Y軸的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-02-02
  • 詳解如何使用Python的Plotly庫(kù)進(jìn)行交互式圖形可視化

    詳解如何使用Python的Plotly庫(kù)進(jìn)行交互式圖形可視化

    Python中有許多強(qiáng)大的工具和庫(kù)可用于創(chuàng)建交互式圖形,其中之一就是Plotly庫(kù),Plotly庫(kù)提供了豐富的功能和靈活的接口,使得創(chuàng)建各種類(lèi)型的交互式圖形變得簡(jiǎn)單而直觀,本文將介紹如何使用Plotly庫(kù)來(lái)創(chuàng)建交互式圖形,需要的朋友可以參考下
    2024-05-05
  • Python學(xué)習(xí)之名字,作用域,名字空間(下)

    Python學(xué)習(xí)之名字,作用域,名字空間(下)

    這篇文章主要介紹了Python學(xué)習(xí)之名字,作用域,名字空間,緊接上一篇文章內(nèi)容展開(kāi)全文,需要的小伙伴可以參考一下,希望對(duì)你的學(xué)習(xí)有所幫助
    2022-05-05

最新評(píng)論

夹江县| 涡阳县| 湛江市| 康马县| 舞阳县| 工布江达县| 马龙县| 文安县| 鄯善县| 新源县| 永胜县| 普陀区| 陕西省| 新民市| 井冈山市| 周口市| 定远县| 新昌县| 资溪县| 四平市| 上杭县| 高淳县| 银川市| 连城县| 田东县| 葫芦岛市| 武穴市| 内丘县| 黎平县| 施甸县| 元氏县| 宣武区| 平原县| 望江县| 桐柏县| 吴江市| 中卫市| 武城县| 正阳县| 江川县| 长春市|