您的位置:首页 > 理论基础 > 数据结构算法

python数据结构——选择排序、冒泡排序代码实现详细过程

2019-03-28 18:26 399 查看
def select(alisst):
"""选择排序"""
for i in range(len(alisst) - 1):  # 循环次数
min_index = i  # 将第一个默认为最小的
for j in range(i + 1, len(alisst)):  # 从i后一个进行循环和i进行比较
if alisst[j] < alisst[i]:  # 循环出来的j 小于i
min_index = j  # 将j作为最小值
if min_index != i:  # i不是最小值
alisst[i], alisst[min_index] = alisst[min_index], alisst[i]  # 循环出来的i和定义出来的最小值调换
# 最优时间复杂度为:O(n^2)
# 最坏时间复杂度为:O(n^2)
# 稳定性:不稳定(有相同最大元素会改变原有顺序)

li = [12, 45, 86, 52, 49, 32]
select(li)
print(li)

结果:

def bubbling(alist):
"""冒泡"""
for j in range(len(alist) - 1):  # 遍历需要比较的数到倒数第二个就行即len(alist)-1
count = 0
for i in range(len(alist)-1 - j):  # 遍历需要比较的数 范围:减去j循环过的
if alist[i] > alist[i + 1]:  # 这个和下一个进行比较
alist[i], alist[i + 1] = alist[i + 1], alist[i]  # 互换位置
count += 1
if 0 == count:
break
# 最优时间复杂度为O(n)
# 最坏时间复杂度为O(n^2)
# 稳定性:稳定,不改变原有的顺序

li = [77, 52, 54, 5, 89, 64, 699]
bubbling(li)
print(li)

结果:

# li = [77, 52, 54, 5, 89, 64, 699]
# li2 = []
# while len(li):
#     li2.append(min(li))
#     li.remove(min(li))
# print(li2)

结果:

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