关于新手用python写冒泡排序

编程入门 行业动态 更新时间:2024-10-26 02:35:59

关于<a href=https://www.elefans.com/category/jswz/34/1769482.html style=新手用python写冒泡排序"/>

关于新手用python写冒泡排序

关于背景:
当当当,这是用python3.8写的一个冒泡排序作业,没错,是一个课外的作业。我课上教的是C语言,所以有一点C语言的思想在其中。然后我在这里分享出我一个python新手在这个过程中遇到的一些bug,和在这个过程中了解到的一些小知识点。然后,如果有误的话,欢迎指出。
现在,duang duang duang ,请接收。

关于冒泡排序
原理就是:把第一个和第二比较,如果第二个比第一个大,就互换一下位置,把较大的那个放在第一个的位置上,再把较大的那个和第三个比较大小,然后如果第三个比较大的话就交换位置,然后再依次和后面的比较。在把最大的那个放在第一个的位置上后,接着再重复第一个的操作,把第二个最大的放在第二个的位置上,以此类推,然后就像冒泡泡一样,把较大的一个个往上冒。

关于代码

print('please input the numbers:')x=input()
#用input函数输入一个字符串list=x.split(',')
#用spilt()函数拆分x字符串,通过逗号分隔符对字符串进行拆分
#并返回分割后的字符串列表 list 
#其中也可以定义为空格分割  list=x.split(' ')for i in range(0,len(list)):
#搞一个循环,类似于C语言的 for(int i=0;i<len(list);i++)list[i]=int(list[i])#因为input()函数是输入str类型的,这里要转换成int类型def sort (blue):
#这里搞一个循环函数sort(),里面的blue是一个数组形参
#这里的def是define的前三个字母,是用来声明函数的max=0#下面我有用到了max作为一个中间变量num=len(blue)#这里用了一个len()函数,用来返回对象blue数组的长度for i in range(0,num):#这里搞一个循坏来进行,把第一大,第二大的依次冒泡上去for j in range(i+1,num):#这个循环是完成第i个和后面的比较的,比较一下哪个比较大,然后冒泡if blue[i]>blue[j]: max=blue[i]blue[i]=blue[j]blue[j]=maxreturn blue#返回排列好的blue数组print(sort(list))
#输出排列好的数组               

关于遇到的bug
(1), TypeError: 'str' object cannot be interpreted as an integer
去查了一下,是因为input 读取的是字符型,需要转换为int型。就加了个list[i]=int(list[i])
(2),invalid literal for int() with base 10: '2.4.5.'输入的数字无效;然后发现是因为我代码中是定义了逗号‘,’来间隔数字,而我在运行时打了‘.’。
(3),invalid literal for int() with base 10: '2,3,4'没错,这里看上去好像没什么,其实这里是用了全角的逗号。

关于更好

if blue[i]>blue[j]: max=blue[i]blue[i]=blue[j]blue[j]=max

这里是有一些C语言的思想在其中的,可以换成blue[i],blue[j] = blue[j],blue[i]
也是交换值的,同时也更便捷一些。

更多推荐

关于新手用python写冒泡排序

本文发布于:2024-03-13 10:46:24,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1733813.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:新手   python

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!