# 冒泡排序
# 排序的过程:两个相邻的数比较,比如从小到大比:如果a>b就交换两个数,一直交换到最后一个,确定了最大的值排在最后,再接着比第二轮...
# 从左边往右边交换:第一轮比较后,最右边的就是最大值,接着比较第二轮就要排除最右边的已排好的数字,每轮比较都是如此
# 注意嵌套训循环对索引的控制
a = [2,3,0,100,6,3,-2]
n=len(a)
print("从左往右交换:")
for i in range(n-1,0,-1):
for j in range(i):
if a[j] > a[j+1]: #如果时<,就从大到小排列
a[j],a[j+1] = a[j+1],a[j]
print(a)
# 从右往左交换:比如从小到大排序,从右边开始交换,将最小的数排在左边,下一轮比较就要排除左边已经排好序的
# 注意嵌套训循环对索引的控制
print("从右往左交换")
for i in range(n):
for j in range(n-1-i,0,-1):
if a[j] < a[j-1]: #如果时<,就从大到小排列
a[j],a[j-1] = a[j-1],a[j]
print(a)
# 选择排序:
# 排序过程:每轮以左边第一个数为基准,假设是最大值,然后依次和右边的数比较,如果右边的数比他大,那么将这个数设置为最大值,并存储它的索引
# 直到第一轮比较完,确定了最大值,将最大值和最右边位置的交换;比较第二轮,排除最右边的最大值,第三轮...
#从左往右排:从小到大排,每次将最大的排在最右边
print("选择排序,从左往右")
for i in range(n-1,0,-1):
positionMax = 0
for j in range(1,i+1):
if a[j] > a[positionMax]:
positionMax = j
a[i],a[positionMax] = a[positionMax],a[i]
print(a)
# 排序过程:从右往左排,比如从小往大排:以右边为基准,从右开始比较,每轮比较,将最小的排到最左边,排完所有轮,排序完成
print("选择排序,从右往左")
for i in range(n):
positionMax = n-1
for j in range(n-i-1,0,-1):
if a[j] > a[positionMax]:
positionMax = j
a[j], a[positionMax] = a[positionMax],a[j]
print(a)
python冒泡排序和选择排序
原创wx5a4c600866558 ©著作权
©著作权归作者所有:来自51CTO博客作者wx5a4c600866558的原创作品,请联系作者获取转载授权,否则将追究法律责任
下一篇:python 插入排序
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
冒泡排序和选择排序
冒泡排序和选择排序是比较简单的排序算法,也是面试中经常会问到的,下面我们总结\
最小值 选择排序 i++