欧美一区2区三区4区公司二百,国产精品婷婷午夜在线观看,自拍偷拍亚洲精品,国产美女诱惑一区二区

python每日算法 | 揭開計數排序的秘密

計數排序

什么是計數排序

  • python每日算法 | 揭開計數排序的秘密

?

?

計數排序的核心在于將輸入的數據值轉化為鍵存儲在額外開辟的數組空間中。作為一種線性時間復雜度的排序,計數排序要求輸入的數據必須是有確定范圍的整數

簡單來說計數排序就是對對列表進行排序,已知列表中的范圍數都在0~100之間。設計時間復雜度為O(n)的算法。

實例講解

現有列表:

1 3 2 4 1 2 3 1 3 5

首先建一個列表(元素為下標),接下來遍歷計數每個元素有多少個,創建一個新列表存儲數量。

0??? 0

1??? 0

2??? 0

3??? 0

4??? 0

5??? 0

第一次:

0??? 0

1??? 1

2??? 0

3??? 0

4??? 0

5??? 0

第二次

0??? 0

1??? 1

2??? 0

3??? 1

4??? 0

5??? 0

……

最后

0??? 0

1??? 3

2??? 2

3??? 3

4??? 1

5??? 1

接下來得到最終列表:

1 1 1 2 2 3 3 3 4 5

(列表寫的簡化,見諒)

代碼的實現

def count_sort(lst,max_count=100): ?# 傳入列表和最大值
?
? ? count = [0 for i in range(max_count+1)] ?# 計數列表
?
? ? for val in lst:
?
? ? ? ? count[val] += 1 ?# val即為下標
?
? ? lst.clear() ?# 寫到lst中之前需要情況lst
?
? ? for ind,val in enumerate(count): ?# 下標和值
?
? ? ? ? for i in range(val): ?# 查看個數并增加到列表中
?
? ? ? ? ? ? lst.append(ind)
?
?
?
import random
?
lst1 = [random.randint(0,5) for i in range(10)]
?
print(lst1)
?
count_sort(lst1)
?
print(lst1)
?
# 輸出結果
?
# [2, 2, 0, 1, 4, 3, 5, 4, 0, 3]
?
# [0, 0, 1, 2, 2, 3, 3, 4, 4, 5]

?

計數排序的時間復雜度

第一層循環count“+”了n次,第二層是append“+”n次,兩層循環循環加起來是2n,因此時間復雜度為O(n)

文章鏈接: http://www.qzkangyuan.com/12827.html

文章標題:python每日算法 | 揭開計數排序的秘密

文章版權:夢飛科技所發布的內容,部分為原創文章,轉載請注明來源,網絡轉載文章如有侵權請聯系我們!

聲明:本站所有文章,如無特殊說明或標注,均為本站原創發布。任何個人或組織,在未征得本站同意時,禁止復制、盜用、采集、發布本站內容到任何網站、書籍等各類媒體平臺。如若本站內容侵犯了原著者的合法權益,可聯系我們進行處理。

給TA打賞
共{{data.count}}人
人已打賞
建站教程投稿分享

python每日算法 | 揭開計數排序的秘密

2022-11-18 0:19:14

建站教程投稿分享

計算機網絡的節點和邊點

2022-11-18 0:26:01

0 條回復 A文章作者 M管理員
    暫無討論,說說你的看法吧
?
個人中心
購物車
優惠劵
今日簽到
有新私信 私信列表
搜索
主站蜘蛛池模板: 阳江市| 鄂尔多斯市| 弋阳县| 尼勒克县| 馆陶县| 娱乐| 二连浩特市| 静宁县| 万山特区| 江油市| 庐江县| 玉屏| 镇远县| 临西县| 凤冈县| 新津县| 平乡县| 麦盖提县| 兴宁市| 绍兴市| 巨野县| 尼玛县| 洛扎县| 凤城市| 桐庐县| 遂平县| 乳山市| 桃江县| 无极县| 淮安市| 通许县| 宁城县| 屏山县| 太康县| 新乡县| 武强县| 于田县| 高密市| 冀州市| 颍上县| 尼勒克县|