运用def函数进行从小到大的排序

img

求帮忙,到底怎么排序啊
试出了一个结果是正确的,但是怎么调整都会出现四行
如何让结果只显示 标红 的那个答案

以上通许的代码实现了一个简单的选择排序算法,用于对列表 x 进行排序。选择排序是一种基于比较的排序算法,它通过不断选择最小(或最大)的元素并放置到已排序部分的末尾来完成排序。

以下是代码的逐行解释:

def sort_list(x):
    n = len(x)  # 获取列表的长度
    for i in range(n):  # 外层循环,遍历每个元素
        for j in range(i+1, n):  # 内层循环,从 i+1 开始遍历后面的元素
            if x[j] < x[i]:  # 如果后面的元素小于当前元素
                x[i], x[j] = x[j], x[i]  # 交换两个元素的位置
    return x  # 返回排序后的列表

x = [4, 8, 2, 9, 3, 5]
print(sort_list(x))  # [2, 3, 4, 5, 8, 9]

代码首先定义了一个名为 sort_list 的函数,接受一个列表 x 作为参数。函数中的变量 n 存储了列表 x 的长度。

接下来,使用嵌套的两个循环进行选择排序。外层循环从列表的第一个元素开始遍历到倒数第二个元素,内层循环从外层循环的下一个位置开始遍历到列表的最后一个元素。

在内层循环中,通过比较当前元素 x[i] 和后面的元素 x[j] 的大小,如果 x[j] 小于 x[i],则交换这两个元素的位置,将较小的元素放在前面。

最终,函数返回排序后的列表。

在给定的例子中,原始列表 x[4, 8, 2, 9, 3, 5],经过选择排序后,得到的排序列表是 [2, 3, 4, 5, 8, 9]

你在j循环的if判断最后打印了一次数组x,这意味着每当判断条件生效时都会打印一次x,把if里那个打印删掉,然后在fun()函数的最后返回x,这样就只会在第9行打印一次fun()函数的返回值了

x=[4,8,2,9,3,5]
y=len(x)
def fun(x):
    for i in range(y):
        for j in range(i-1):
            if x[j]>x[i]:
                x[j],x[i]=x[i],x[j]
    return x
print(fun(x))

你的代码存在一些问题,例如 y 变量没有定义。此外,在内部循环中,range(i-1) 实际上等于 range(0),因此内部循环没有被执行。此外,该函数没有返回值,也就是说执行 print(fun(x)) 时打印的结果是 None。

。异下是调整后代码,希望对你有帮助


def sort_list(x):
    n = len(x)
    for i in range(n):
        for j in range(i+1, n):
            if x[j] < x[i]:
                x[i], x[j] = x[j], x[i]
    return x

x = [4, 8, 2, 9, 3, 5]
print(sort_list(x))  # [3, 4, 5, 9, 82]

函数不需要返回,因为排序是改变列表的顺序,而且是原始列表的排序,所以,只需要执行排序方法后,打印一次列表即可(参考冒泡排序)。

def sort_list(x):
    n = len(x)
    for i in range(n):
        for j in range(i + 1, n):
            if x[j] < x[i]:
                x[i], x[j] = x[j], x[i]


x = [4, 8, 2, 9, 3, 5]

sort_list(x)
print(x)

1.print别放for循环里面
2.函数外面别print