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

冒泡排序(bubble_sort)——Python实现

时间:2019-10-20 00:59:13      阅读:97      评论:0      收藏:0      [点我收藏+]

标签:逆向   text   line   作用   冒泡   rev   实现   变化   int   

# 冒泡排序
# 作用:对给出的n个顺序不定的数进行排序
# 输入:任意数组A
# 输出:按顺序排列的数组A
 
# 冒泡排序过程
# 第一趟:以第一个数为基准,从最后一位数开始,依次与它比较,
#               若大于它,则交换,若小于它,则继续判断前一个数
#               完成一趟后,这个基准数(即第一个数)是所有数里最大的
# 第二趟:以第二个数为基准,从最后一位数开始,依次与它比较,
#               若大于它,则交换,若小于它,则继续判断前一个数
#               完成一趟后,这个基准数(即第二个数)是除了第一个数之外最大的
# 以此类推,直到以最后一个数位基准时,得到倒序的数组
 
 1 # 在此修改初始数据
 2 A = [12,56,92,-1,5,110,92,999,-39,21,76,33,56]
 3 
 4 print(您的初始数据为:)
 5 print(A);print(\n*1)      # print(‘\n‘*1) 意思为空一行,仅起使输出美观的作用
 6 n = len(A)          # 用n获取数组长度
 7 i = 0               # 外循环时数组的下标
 8 j = n-1             # 内循环时数组的下标
 9 
10 while i <= n-1:
11     while j != i:
12         if A[j] > A[i]:
13             temp = A[i]
14             A[i] = A[j]
15             A[j] = temp
16             j = j - 1
17         else:
18             j = j - 1
19     j = n -1        # 重置j,使得下次循环能j能从最后一个数开始
20     i = i + 1       # 完成一次循环后,第i个数已被确定,是当前剩余的数中最大的
21     print(A)
22  
23 print(\n*1)       
24 print(冒泡排序的结果:)       # 输出的数据是逆向排序的
25 print(A)
26 
27 A.reverse()         # python自带的函数,使逆序
28 print(取倒序后数据为:)     
29 print(A)

运行结果:

您的初始数据为:
[12, 56, 92, -1, 5, 110, 92, 999, -39, 21, 76, 33, 56]
冒泡排序的结果:
[999, 110, 92, 92, 76, 56, 56, 33, 21, 12, 5, -1, -39]
取倒序后数据为:
[-39, -1, 5, 12, 21, 33, 56, 56, 76, 92, 92, 110, 999]

该算法具体实现过程中数组A的变化情况:

其中,下划线___表示的是在每一趟(每一次外循环)确定下来的数

 1 [999, 56, 92, -1, 5, 110, 92, 76, -39, 21, 56, 33, 12]
 2 [999, 110, 92, -1, 5, 92, 76, 56, -39, 21, 56, 33, 12]
 3 [999, 110, 92, -1, 5, 92, 76, 56, -39, 21, 56, 33, 12]
 4 [999, 110, 92, 92, 5, 76, 56, 56, -39, 21, 33, 12, -1]
 5 [999, 110, 92, 92, 76, 56, 56, 33, -39, 21, 12, 5, -1]
 6 [999, 110, 92, 92, 76, 56, 56, 33, -39, 21, 12, 5, -1]
 7 [999, 110, 92, 92, 76, 56, 56, 33, -39, 21, 12, 5, -1]
 8 [999, 110, 92, 92, 76, 56, 56, 33, -39, 21, 12, 5, -1]
 9 [999, 110, 92, 92, 76, 56, 56, 33, 21, 12, 5, -1, -39]
10 [999, 110, 92, 92, 76, 56, 56, 33, 21, 12, 5, -1, -39]
11 [999, 110, 92, 92, 76, 56, 56, 33, 21, 12, 5, -1, -39]
12 [999, 110, 92, 92, 76, 56, 56, 33, 21, 12, 5, -1, -39]
13 [999, 110, 92, 92, 76, 56, 56, 33, 21, 12, 5, -1, -39]

简而言之,冒泡排序法就是每次找出剩余的数中最大的一个,并按顺序存储下来。

 

 

 

 

 

冒泡排序(bubble_sort)——Python实现

标签:逆向   text   line   作用   冒泡   rev   实现   变化   int   

原文地址:https://www.cnblogs.com/aiyou-3344520/p/11706313.html

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