Python冒泡排序实战:数字重组求和示例与错误排查

小林子
小林子
发布时间:2026-10-13 | 3人浏览过
原创

本文通过Python代码演示如何利用冒泡排序将输入的两个数字按位重组为最小值后相加。文章详细解析了Python 3中input返回字符串类型导致的迭代错误,并提供了修正后的代码方案。同时附带在线排序算法演示工具链接及Python学习资源推荐,帮助开发者理解排序逻辑与类型处理。

本文通过具体实例展示如何使用Python实现冒泡排序,供读者参考学习。

冒泡排序的核心逻辑在于元素交换,即在满足特定条件时将变量i和j的值进行互换。

if i>j:
 p = i
 i = j
 j = p

以下通过一个具体案例进行说明。

案例目标:随机输入两个数字,对每个数字的各位进行排序使其变为最小排列,然后计算这两个最小数的和。

假设输入的第一个数字为51423,第二个数字为88613。

排序重组后,第一个数字变为12345,第二个数字变为13688,最终计算结果为12345+13688的和。

在Python 3环境下的实现代码如下。

# coding:utf-8
a = str(input('请输入第一个数:'))
b = str(input('请输入第二个数:'))
arr_a = []
arr_b = []
for i in a:
 if i in a:
  arr_a.append(i)
for j in b:
 if j in b:
  arr_b.append(j)
##冒泡排序a
for m in range(0,len(arr_a)):
 for m in range(0, len(arr_a)):
  if m+1<len(arr_a):
   if arr_a[m]>arr_a[m + 1]:
    empty = arr_a[m]
    arr_a[m] = arr_a[m + 1]
    arr_a[m + 1] = empty
##冒泡排序b
for n in range(0,len(arr_b)):
 for n in range(0, len(arr_b)):
  if n+1<len(arr_b):
   if arr_b[n]>arr_b[n + 1]:
    empty = arr_b[n]
    arr_b[n] = arr_b[n + 1]
    arr_b[n + 1] = empty
##输出第一个数
x = 0
for num_a in range(0,len(arr_a)):
 x = int(arr_a[num_a])*(10**(len(arr_a)-num_a-1))+x
##输出第二个数
y = 0
for num_b in range(0,len(arr_b)):
 y = int(arr_b[num_b])*(10**(len(arr_b)-num_b-1))+y
print("本站测试结果:")
print(str(x) + '+' + str(y) + '=',x+y)

程序运行输出结果如下。

补充说明:原文中使用的初始代码存在类型问题。

a = input('请输入第一个数:')
b = input('请输入第二个数:')

运行原代码时会出现报错:TypeError: 'int' object is not iterable,这表明数据类型不匹配。因此,需要将输入处理改为字符串类型,修正后的代码如下。

a = str(input('请输入第一个数:'))
b = str(input('请输入第二个数:'))

此外,推荐一款排序算法演示工具供参考。

在线动画演示插入/选择/冒泡/归并/希尔/快速排序算法过程工具: http://tools.jb51.net/aideddesign/paixu_ys

更多关于Python相关内容感兴趣的读者可查看本站专题:《Python数据结构与算法教程》、《Python加密解密算法与技巧总结》、《Python编码操作技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程》

希望本文所述的代码示例对大家掌握Python程序设计有所帮助。

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表