是否有一种方法可以对未分类的列表进行一些重复的元素进行排序



我正在尝试对未分类列表进行排序[4、5、9、9、0、1、8]

该列表有两个重复的元素。我试图通过将每个元素与列表中的下一个元素与每个元素进行比较,然后将较小元素放在列表开始时,将每个元素与每个元素进行比较。

    def sort(ls:
         ls[x]
         x = [4, 5, 9, 9, 0, 1, 8]
          while len(x) > 0:
             for i in the range(0, len(x)):
               lowest = x[i]
               ls.append(lowest)

请有人可以解释我出错的位置以及代码应该如何工作?

可能是我错误地考虑了这个问题,而我对代码应如何工作的理由是不对的

我不知道,如果这正是您要寻找的,但请尝试:sorted(ListObject)sorted()将列表的元素从最小的元素返回到最大。如果重复一个元素,则重复元素是在原始元素之后的。希望有所帮助。

是的,您可以尝试X.Sort((或排序(x(。查看此内容https://www.programiz.com/python-programming/methods/built-in/sorted。另外,在您的程序中,我不会看到您进行任何比较,例如,如果x [i]< = x [i 1]然后...这个代码块将以相同的顺序添加所有元素,直到n*n次。还要检查此https://en.wikipedia.org/wiki/insertion_sort

对于内置的python函数进行排序,让y为您的原始列表,您可以使用排序(y(或y.sort((。请记住(y((将返回一个新列表,因此您需要将其分配给一个变量,例如x = sorted(y(;而如果您使用X.Sort((,它将在就地突变原始列表,因此您只能按原样调用。

如果您想实际实现排序功能,则可以尝试在O(n log n(中运行的合并排序或快速排序,其中将处理具有相同值的元素。如果您需要 -> https://www.geeksforgeeks.org/python-program-forgram-for-merge-sort/,可以检查一下。为了更易于理解排序算法,插入或气泡排序也可以处理重复,但运行时O(n^2( -> https://www.geeksforgeeks.org/python-program-program-forgram-forgram-formble-bubble-sort/。

但是,是的,我同意清态,您当前发布的内容看起来只会以相同的顺序附加。

尝试以上建议之一,希望这有助于您指出正确的方向每一个。希望这会有所帮助,祝你好运!

分类有几种流行的方法。以气泡排序为例,

def bubbleSort(array):
    x = len(array)
    while(x > 1): # the code below make sense only there are at least 2 elements in the list
        for i in range(x-1): # maximum of i is x-2, the last element in arr is arr[x-1]
            if array[i] > array[i+1]:
                array[i], array[i+1] = array[i+1], array[i]
        x -= 1
    return array
x = [4, 5, 9, 9, 0, 1, 8]
bubbleSort(x)

您的代码具有与下面相同的逻辑

def sorts(x):
    ls = []
    while len(x) > 0:
        lowest = min(x)
        ls.append(lowest)
        x.remove(lowest)
    return ls 
x = [4, 5, 9, 9, 0, 1, 8]
sorts(x)
#output is [0, 1, 4, 5, 8, 9, 9]

最新更新