Python實現各類資料結構和演算法 計數排序

2021-06-21 09:43:20 字數 1156 閱讀 2900

計數 排序

假設前提:n個輸入元素中的每乙個都是在0到k區間內的乙個整數,其中k為某個整數

基本思想:對每乙個輸入元素x,確定小於x的元素個數。利用這一資訊,就可以直接把x放到它

輸出陣列中的位置上了。例如:如果有17個元素小於x,則x就應該放在第18個輸出位置上。

當有幾個元素相同時,這一方案要略作修改。

#coding:utf-8

a=[2,5,3,0,2,3,0,3]

def counting_sort(a,b,k):

#------------初始化-------------

a_len=len(a)

c=[0 for w in xrange(0,k+1)] #xrange(0,k),並不包括k,

b=[0 for w in xrange(0,a_len)] #同a一樣長

for i in xrange(0,k+1): #注意範圍,c從0開始,到達max(a),並且包括max(a)

c[i]=0

#----------統計-------------

for j in xrange(0,a_len):

c[a[j]]=c[a[j]]+1

#-----------累加-------------

for i in xrange(1,k+1):

c[i]=c[i]+c[i-1]

#------------處理-------------

for j in xrange(a_len-1,-1,-1):#xrange(a_len-1,-1,-1),j從7,6,。。。0,

c[a[j]]=c[a[j]]-1

b[c[a[j]]]=a[j]

return b

m=[-1 for w in xrange(0,len(a))]#用來返回的

print 'before counting_sort:',a

print 'after counting_sort:',counting_sort(a,m,max(a))

資料結構 各類排序演算法的實現

include include include includeconst int n 1e3 10 using namespace std 給出n個學生的考試成績表,每條資訊由姓名和成績組成,試運用各種排序思想設計演算法並比較其效能,要求實現 a 按分數高低次序,列印出每個學生在考試中獲得的名次,分...

資料結構 Python實現

參考部落格 演算法和資料結構 一 棧和佇列 python資料結構 棧 佇列的實現 一 python資料結構 棧 佇列的實現 二 python資料結構 鍊錶的實現 資料結構 定義 簡單來說,資料結構就是設計資料以何種方式組織並儲存在計算機中。比如 列表 集合與字典等都是一種資料結構。ps 程式 資料結...

資料結構 Python實現

參考部落格 演算法和資料結構 一 棧和佇列 python資料結構 棧 佇列的實現 一 python資料結構 棧 佇列的實現 二 python資料結構 鍊錶的實現 資料結構 定義 簡單來說,資料結構就是設計資料以何種方式組織並儲存在計算機中。比如 列表 集合與字典等都是一種資料結構。ps 程式 資料結...