繁体   English   中英

有没有一种方法可以对具有一些重复元素的未排序列表进行排序?

[英]Is there a way to sort an unsorted list with some repeated elements?

我正在尝试对未排序的列表进行排序[4,5,9,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)

请,有人可以解释我要去哪里哪里以及代码应该如何工作吗?

可能是我对问题有错误的考虑,并且我对代码应如何工作的推理不正确

是的,您可以尝试x.sort()或sorted(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

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

对于要排序的内置Python函数,让y为原始列表,可以使用sorted(y)或y.sort()。请记住sorted(y)将返回一个新列表,因此您需要将其分配给变量,例如x = sorted(y); 相反,如果使用x.sort(),它将原位改变原始列表,因此您可以按原样调用它。

如果您想真正实现排序功能,可以尝试以O(n log n)运行的Merge Sort或Quick Sort,它们将处理具有相同值的元素。 您可以检查是否需要-> https://www.geeksforgeeks.org/python-program-for-merge-sort/ 为了更容易理解的排序算法,插入或冒泡排序也可以处理重复项,但运行时较长O(n ^ 2)-> https://www.geeksforgeeks.org/python-program-for-bubble-sort/

但是,是的,我同意Nameet的观点,您当前发布的内容看起来只是按照相同的顺序添加。

请尝试上述建议之一,希望这可以为您提供正确的方向,以供您查找内置函数或实现某种排序,可以通过多种方式来完成此操作,每个方法都有不同的adv和disadv。 希望这会有所帮助,并祝你好运!

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

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]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM