令狐葱

大漠孤烟直,长河落日圆。

博客园 首页 订阅 管理
 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         

 

posted on 2017-11-22 16:36  livermorium116  阅读(360)  评论(0编辑  收藏  举报