1 #/usr/bin/env python 2 #coding:utf-8 3 #@auther="livermorium" 4 ''' 5 选择排序 6 从数据中选择最小值,排在位置首位 7 再从剩余未排序数据中选择最小值 8 ''' 9 ''' 10 冒泡排序法 11 比较是相邻的两个元素比较,把较大或较小的排在前面,这样经过一轮就可以把较大或较小的元素排在最后面 12 重复上述过程,直到剩余一个元素 13 ''' 14 15 import random 16 17 class SelectionSort(): 18 19 20 21 def __init__(self,data): 22 self.data=data 23 self.SortResults=[] 24 self.Sort() 25 def Sort(self): 26 i=0 27 Length=len(self.data) 28 while i< Length: 29 minIndex=self.data.index(min(self.data))##寻找最小值得下标,之所以选择下标是为了防止存在重复数据造成排序不全 30 self.SortResults.append(self.data[minIndex])##把最小值添加到结果表中 31 #print(self.SortResults) 32 self.data.pop(minIndex)##删除最小值 33 #print(self.data) 34 i=i+1 35 return self.SortResults 36 37 38 class BubbleSort(): 39 40 def __init__(self,data): 41 self.data=data 42 self.SortResults=[] 43 self.Sort() 44 45 def Sort(self): 46 for x in range(len(self.data)): 47 48 for y in range(x,len(self.data)): ##冒泡法排序 49 if self.data[x] > self.data[y]: 50 temp=self.data[x] 51 self.data[x]=self.data[y] 52 self.data[y]=temp 53 #print(self.data) 54 self.SortResults =self.data 55 return self.SortResults 56 57 58 ####测试 59 60 if __name__=="__main__": 61 print("------选择排序法———————————————") 62 TestData=[random.randint(1,100) for x in range(9)] 63 print("原始数据(1):",TestData) 64 selSort=SelectionSort(TestData) 65 print("排序结果(1):",selSort.SortResults) 66 TestData=[11,11,10,9,8,7,8,10] 67 print("存在重复数值的数据(2):",TestData) 68 selSort=SelectionSort(TestData) 69 print("数据(2)排序结果:",selSort.SortResults) 70 print('\n') 71 print("------冒泡排序法———————————————") 72 TestData=[random.randint(1,100) for x in range(9)] 73 print("原始数据(1):",TestData) 74 BulSort=BubbleSort(TestData) 75 print("排序结果(1):",BulSort.SortResults) 76 77
《寄蜉蝣于天地---渺沧海之一粟》