python 实现排序算法(三)-选择排序和冒泡排序

本文介绍了两种基本的排序算法——选择排序和冒泡排序。选择排序通过不断选择最小值来实现排序,而冒泡排序则通过相邻元素的比较交换进行排序。文中还提供了两种排序算法的具体Python实现。
 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         

 

转载于:https://www.cnblogs.com/milliard/p/7879915.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值