码迷,mamicode.com
首页 > 编程语言 > 详细

python冒泡排序和选择排序

时间:2020-09-12 21:54:41      阅读:63      评论:0      收藏:0      [点我收藏+]

标签: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)

python冒泡排序和选择排序

标签:pytho   个数   交换   pos   code   控制   冒泡排序   好的   一个   

原文地址:https://blog.51cto.com/13560219/2526484

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!