标签:pytho 个数 交换 pos code 控制 冒泡排序 好的 一个
# 冒泡排序
# 排序的过程:两个相邻的数比较,比如从小到大比:如果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)
标签:pytho 个数 交换 pos code 控制 冒泡排序 好的 一个
原文地址:https://blog.51cto.com/13560219/2526484