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

python每日算法 | 揭開計數(shù)排序的秘密

計數(shù)排序

什么是計數(shù)排序

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

?

?

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

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

實例講解

現(xiàn)有列表:

1 3 2 4 1 2 3 1 3 5

首先建一個列表(元素為下標(biāo)),接下來遍歷計數(shù)每個元素有多少個,創(chuàng)建一個新列表存儲數(shù)量。

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

(列表寫的簡化,見諒)

代碼的實現(xiàn)

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

?

計數(shù)排序的時間復(fù)雜度

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

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

文章標(biāo)題:python每日算法 | 揭開計數(shù)排序的秘密

文章版權(quán):夢飛科技所發(fā)布的內(nèi)容,部分為原創(chuàng)文章,轉(zhuǎn)載請注明來源,網(wǎng)絡(luò)轉(zhuǎn)載文章如有侵權(quán)請聯(lián)系我們!

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

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

Linux進(jìn)階 | Docker Swarm+Prometheus+Grafana實現(xiàn)web服務(wù)集群的監(jiān)控

2022-11-18 0:16:06

投稿分享

python每日算法 | 揭開計數(shù)排序的秘密

2022-11-18 0:22:42

0 條回復(fù) A文章作者 M管理員
    暫無討論,說說你的看法吧
?
個人中心
購物車
優(yōu)惠劵
今日簽到
有新私信 私信列表
搜索
主站蜘蛛池模板: 保靖县| 奈曼旗| 绥滨县| 祁门县| 苗栗县| 平舆县| 宜宾县| 奉新县| 酉阳| 长宁区| 和政县| 商丘市| 凤冈县| 凌海市| 东台市| 民勤县| 周至县| 小金县| 龙岩市| 宁安市| 江源县| 项城市| 涞水县| 龙陵县| 浙江省| 西乌| 洪雅县| 依安县| 灵璧县| 东宁县| 雷山县| 贞丰县| 容城县| 梁河县| 镇安县| 奉贤区| 清远市| 磐石市| 黑河市| 岳西县| 五指山市|