算法与数据结构---选择排序

def select_sort_simple(li):
    li_new = []
    for i in range(len(li)):
        min_val = min(li)
        li_new.append(min_val)
        li.remove(min_val)
    return li_new

l = [3,4,6,7,3,8,1,9,0]
print(select_sort_simple(l))

# 一般不建议使用这种方法,因为该方法不是原地排序,多占用了一次空间内存
# 该方法时间复杂度为O(n*n) / 因为min()方法以及remove()方法也是一次N次的循环


def select_sort(li):
    for i in range(len(li) - 1):
        min_val0 = i
        for j in range(i + 1, len(li)):
            if li[min_val0] > li[j]:
                min_val0 = j
        if min_val0 != i:
            li[min_val0], li[i] = li[i], li[min_val0]
    return li

li = [3,4,6,7,3,8,1,9,0]
print(select_sort(li))


# 一趟排序记录最小的数,放到第一个位置
# 再一趟排序记录记录列表无序区最小的数,放到第二个位置
# 算法关键点: 有序区和无序区、无序区最小数的位置
# 该方法时间复杂度为O(n*n)

猜你喜欢

转载自blog.csdn.net/m0_52336378/article/details/133711375