描述一个按循环排序的函数

2024-09-29 02:25:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我有个任务。这是一项学习任务。我成功地解决了它。但我有个问题。问题是我需要按降序排列列表中的值,而不使用函数和方法。这需要在循环中完成(没有像我一样使用sorted())。你知道吗

伙计们,我真的在寻找解决这个问题的方法,并试图自己想出这个方法。但我没有成功。请帮帮我。你知道吗

import random

spisok = []

for i in range(0,5):
    spisok.append(random.randint(1,25))

print('The following numbers are generated: ')
print(spisok)

sorted_nums = sorted(spisok, reverse=True)

i = 1

last_num = sorted_nums[0]
print('{i} maximum: {maxim}'.format(i=i, maxim=last_num))

for j in range(1, len(sorted_nums)):
    num = sorted_nums[j]
    if num != last_num:
        i += 1
        print('{i} maximum: {maxim}'.format(i=i, maxim=num))

    last_num = num

Tags: 方法informatforrangerandomnumlast
2条回答

我解决了这个问题。感谢昵称为DarrylG的用户对解决方案的指导。你知道吗

我使用“<;”符号按降序排列数字。如果将符号改为“>;”,则数字将按升序排序。嗯,我对代码做了最低限度的修改,删除了所有的排序结果,因为现在不需要了。你知道吗

import random

spisok = []

for i in range(0,5):
    spisok.append(random.randint(1,25))

print('The following numbers are generated: ')
print(spisok)

for i in range(5-1):  
    for j in range(5-i-1):
        if spisok[j] < spisok[j+1]:
            spisok[j], spisok[j+1] = spisok[j+1], spisok[j]

i = 1

last_num = spisok[0]
print('{i} maximum: {maxim}'.format(i=i, maxim=last_num))

for j in range(1, len(spisok)):
    num = spisok[j]
    if num != last_num:
        i += 1
        print('{i} maximum: {maxim}'.format(i=i, maxim=num))

    last_num = num

在计算机科学中,排序实际上是一项非常重要(而且经过深思熟虑)的任务,而且并不是只有一种方法。你的热情是巨大的,但一个简单的谷歌搜索会发现一些排序算法,你可以使用。我不知道你到底想用for循环做什么,但下面是我的方法:

如前所述,有几种不同的排序算法,它们适用于多种不同的情况。最容易理解(效率最低)的是冒泡排序。从本质上讲,您从头到尾遍历列表n^2次,如果当前值大于上一个值,则交换它们。用Python实现,如下所示:

def bubbleSort(lst):
    for i in range(len(lst) - 1):
        for j in range(i, len(lst) - 1):
            if lst[j] > lst[j + 1]:
                # Swap if item is bigger than next item
                lst[j], lst[j+1] = lst[j+1], lst[j]

同样,你也可以做一个选择排序,在列表中找到最小的项目,把它放在开头,然后找到下一个最小的,把它放在下一个位置,以此类推。。。你知道吗

…Python实现如下所示:

def selectionSort(lst):
    for i in range(len(lst)):
        for j in range(i, len(lst)):
            if lst[j] < lst[i]:
                lst[j], lst[i] = lst[i], lst[j]

显然,这只是冰山一角。您还可以实现多个排序算法。插入排序、快速排序等,每种方法都能更好地处理不同的数据集。但是,如果您刚刚开始编写代码,请从气泡、选择和插入开始。一旦你学会了递归,做一个快速排序。你知道吗

如果您想看到每一个工作方式的可视化效果,我最喜欢的网站之一是VisuAlgo。你知道吗

PS:不要把代码复制到这里。学习算法是如何工作的,并尝试自己实现它。我已经提供了这两个参考和网上有吨的资源。你知道吗

相关问题 更多 >