Python演算法入門 第1章 1,桶排序

2021-08-30 13:58:25 字數 1042 閱讀 2166

假如你有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 ...