您的位置:首页 > 其它

7.30 冒泡算法

2019-07-30 20:33 92 查看
原文链接:http://www.cnblogs.com/PowerTips/p/11272570.html

冒泡算法应用

​ 结合点语法等

'''
1.编写class类,拥有name,teacher,course三个属性,自定义打印格式输出,对象的全部属性
'''

'''
2.编写student类,存储用户信息,

要求改类对象可以使用点语法来操作属性,也可以通过中括号的方式操作属性

要求通过班级可以获取到班级下的所有学员 ,思考关联关系,应该如何表示
'''

'''
3.创建一系列student对象存储到列表中, 然后编写排序算法,将对象按照年龄排序,排序算法不限
'''
[/code]
class Class:
def __init__(self,name,teacher,course):
self.name = name
self.teacher = teacher
self.course = course

def __str__(self):
return "[name: %s teacher: %s course: %s]"% (self.name,self.teacher,self.course)
c1 = Class("天才小组","天才老师","天才课程")

print(c1)

class Student(dict):
def __init__(self,name,age,gender,team_name):
super().__init__()
self.name = name
self.age = age
self.gender = gender
self.team_name = team_name

def __getattr__(self, item):
return self[item]

def __setattr__(self, key, value):
self[key] = value

def __delattr__(self, item):
del self[item]

def __gt__(self, other):
return self.age > other.age

stu1 = Student("小明",12,"man",c1.name)
stu2 = Student("小李",10,"woman",c1.name)
stu3 = Student("小天",14,"man",c1.name)
stu4 = Student("小慧",9,"woman","没班级")

stu = [stu1,stu2,stu3,stu4]
# 按照年龄从小到大
————————————————————————————————————
for i in range(len(stu)):
for j in range(i,len(stu)-1):
s1 = stu[j]
s2 = stu[j+1]
if s1 > s2:
stu[j] = s2
stu[j+1] = s1
print("交换位置了")
print(stu)
————————————————————————————————————
# 下面的只是把同一组的放到一起
res = []
for stu in stus:
if stu.team_name == c1.name:
res.append(stu)

print(c1.name,"共有:",res)
[/code]

冒泡算法原理

ls = [2,1,3,5,100,24,12,12,1,2,1,1,4,32]
for i in range(len(ls)-1):
for j in range(len(ls)-1-i):
# 如果前面的小于后面的则交换位置
if ls[j] > ls[j+1]:
ls[j],ls[j+1] = ls[j+1],ls[j]
print(ls)

"""
冒泡排序
从大到小
第一圈:
[2,1,3,5]
第一次 得出2的位置
[2,1,3,5]
第二次
[2,3,1,5]
第三次
[2,3,5,1]

次数为  元素个数 - 1 - (圈数索引为0)

第二圈:
[2,3,5,1]
第一次
[3,2,5,1]
第二次
[3,5,2,1]

次数为 元素个数 - 1 - (圈数索引为1)

第三圈:
[3,5,2,1]
第一次
[5,3,2,1]

次数为 元素个数 - 1 - (圈数索引为2)

总结规律
圈数  是元素个数减一
次数  元素个数 - 1 - (圈数索引)

我们需要两层循环
一层控制圈数
一层控制次数

"""
[/code]

转载于:https://www.cnblogs.com/PowerTips/p/11272570.html

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: