計數 排序
假設前提: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 程式 資料結...