在Python中,有很多排序方法,有直接用sort或sorted函数的排序,有快速排序,有选择排序,有插入排序等等。当然,还有冒泡排序。
在Python中,冒泡排序是比较常见的,下面就说说冒泡排序的过程:
[3,2,4,1,5] 这个列表想要把它升序,怎么办?先要一个for循环,以便查找数据,for里面再套for,最里面的for做判断,就可以交换位置,遍历多次,以便遗漏
第一个for循环里要循环这个列表元素的个数次,第二个for循环要循环这个列表元素的个数次减1再减去第一个for循环的第 i 次。
因此,for循环代码为:
for i in range(len(s)):
for j in range(len(s)-i-1):
if s[j] > s[j+1] :# 此为判断是否大于后一个数,大于就换(升序判断),如果想是降序,就把">"改成"<"
s[j], s[j+1] = s[j+1], s[j]
这里的s是列表
再加上输入和输出,总代码就是这样:
"""
Python冒泡排序
两个for
"""
s = list(map(int,input().split(" ")))# 输入列表,以空格分隔,返回列表。 在此,就可输入:3 2 4 1 5
for i in range(len(s)):
for j in range(len(s)-i-1):
if s[j] > s[j+1] :# 此为判断是否大于后一个数,大于就换(升序判断),如果想是降序,就把">"改成"<"
s[j], s[j+1] = s[j+1], s[j]
for i in s:
print(i,end=" ")# 输出,按之前,输出为:1 2 3 4 5
输入和输出的格式大家可以自己定,我的是这样的:
还有一种用class做的,无论升序还是逆序都写了
code
import sys
# 定义类型sort_big,small->big
class sort_big(object):
# 定义self参数
def __init__(self, f):
self.f = f
# 定义sorts函数,完成排序
def sorts(self):
for i in range(0, len(self.f)):
for j in range(0, len(self.f)-i-1):
if self.f[j] > self.f[j+1]:
self.f[j], self.f[j+1] = self.f[j+1], self.f[j]
return f
# 定义类型sort_small,big->small
class sort_small(object):
# 定义self参数
def __init__(self, f):
self.f = f
# 定义sorts函数,完成排序
def sorts(self):
for i in range(0, len(self.f)):
for j in range(0, len(self.f) - i - 1):
if self.f[j] < self.f[j + 1]:
self.f[j], self.f[j + 1] = self.f[j + 1], self.f[j]
return f
f = [int(x) for x in input().split(" ")]
a = f
# 通过调用类函数来进行排序(small->big)
x = sort_big(f)
f = x.sorts()
for i in f:
print(i, end=" ")
print(end='\n') # 换行,方便看清晰
# 通过调用类函数来进行排序(small->big)
y = sort_small(f)
f = y.sorts()
for i in f:
print(i, end=" ")
print(end='\n') # 换行,方便看清晰
# sys.exit()# 停止程序,为防止运行一下程序
a.sort() # 把列表升序
# a = sorted(a) # 把列表升序
# print(a)
a.sort(reverse=True) # 把列表降序
# a = sorted(a, reverse=True) # 把列表降序
# print(a)