假如你有7個數需要排序,最大的數為100,那麼你就需要101個桶,桶的編號為0-100。你的數列中的數是多少,就往對應的桶裡面加一,最後按照順序列印桶的編號即可。但此排序方式浪費資源極大,資料量大的時候不建議使用,本文只是介紹最基本的演算法實現原理,作為入門使用。
class solution():
'''對輸入的列表進行排序
桶排序'''
def paixu(self, x):
#讀取數列中的最大數,從而知道需要幾個桶
max_num = max(x)
#a作為桶來記錄對應數值的多少
a = list()
#用來記錄桶的編號,便於列印數字
m = -1
#將所有桶清空,共需要max_num+1個桶
for i in range(max_num+1):
#如果痛的編號與給入的數值相等,則將桶內的數字加一
for j in range(max_num+1):
for item in x:
if j == item:
a[j] += 1
#將桶內的數字列印
for i_j in a:
m += 1
for j_i in range(i_j):
print(m)
if __name__ == "__main__":
a = solution()
a.paixu([0,4,100,6,9,5,4,20])
#include int main()
for(i=0;i<=10;i++) //依次判斷a[0]~a[10]
for(j=1;j<=a[i];j++) //出現了幾次就列印幾次
printf("%d ",i);
getchar();getchar();
//這裡的getchar();用來暫停程式,以便檢視程式輸出的內容
//也可以用system("pause");等來代替
return 0;
}
Python演算法入門 第1章 2,氣泡排序
class solution 氣泡排序 從大到小排序 def maopao self,x 有多少數字,迴圈多少次 for i in range len x 依次讀取列表x裡面的資料,並與下乙個數進行比較 for j in range len x 1 如果小於下乙個數,就將兩個數交換位置 if x j...
Python演算法入門 第1章 3,去重排序
去掉重複的數字,並且將剩餘的數字進行從大到小的排序,python 如下 class solution 去除重複數字 從大到小排序 def maopao self,x 用集合去重,最後用sorted排序,再用 1 倒序處理 a i for i in set x return sorted a 1 if...
演算法競賽入門第七章 1 暴力列舉
def create m,obj list range 10 defremove 2 x,l l l l.remove x return l ans if m 0 return 0 for i in obj ans tmp create m 1,remove 2 i,obj for each in ...