如何不使用sorted()方法进行选择排序?

时间:2019-04-24 04:43:32

标签: python

我正在进行选择排序,但是没有使用sorted()。

我尝试查看sorted()方法的源代码,以查看是否有潜在客户,但运气不好。

我想要这样的东西:

list1 = [3,4,2]
list2 = []

<code that sorts list 1, into list2>
print(list2)

和list2打印2,3,4

2 个答案:

答案 0 :(得分:1)

这是您想要的选择类别:

def selection_sort(list):
    for i in range(0, len(list) - 1):
        min_num = list[i]
        for j in range(i + 1, len(list)):
            min_num = min(min_num, list[j])
        list[list[i:].index(min_num) + i], list[i] = list[i], min_num
    return list

但是选择排序的时间复杂度是:{平均:Θ(n ^ 2),更糟:O(n ^ 2),最佳:Ω(n ^ 2)},您可能想要一个更好的方法。

答案 1 :(得分:0)

通过将每次迭代中读取的每个元素与列表中的其他元素进行比较,可以不使用sort()函数对它们进行排序。

list1 = [3,4,2]
list2 = []
minimum = list1[0]  # arbitrary number in list 

while list1:
    minimum = list1[0]  # arbitrary number in list 
    for x in list1: 
        if x < minimum:
            minimum = x
    list2.append(minimum)
    list1.remove(minimum)

print (list2)

或其他方法,但结果将更改原始列表。

for i in range(len(list1)):
    for j in range(i + 1, len(list1)):
        if list1[i] > list1[j]:
            list1[i], list1[j] = list1[j], list1[i]
print (list1)