在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)

运行结果

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐