<< ..

使用Python实现选择排序

发布时间:

首先看懂选择排序定义:

WIKI: 选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理如下。首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。

必然要经过的一个步骤是在未排序的列表中找到最小(大)的元素。我们构建一个待排序list,代码中叫waitting_sort_list。首先实现每次找出最小元素的函数,开始默认最小的元素是index为0的元素,然后用for遍历列表剩余元素逐个对比,只要找到比默认最小元素还要小的,就替换最小元素位置。最后,将最小元素返回。

接下来要实现的是,当获取最小元素后,将最小元素构建到新的队列中,然后将最小元素从最小队列中剔除。最终构建的新队列是有序的队列。

实现代码如下:

def find_smallest_elem_in_list(waitting_sort_list):
    smallest_num = waitting_sort_list[0]
    smallest_index = 0
    for index in range(1, len(waitting_sort_list)):
        if waitting_sort_list[index] < smallest_num:
            smallest_num = waitting_sort_list[index]
            smallest_index = index
    return smallest_index

def selection_sort_list(waitting_sort_list):
    ordered_list = []
    for index in range(len(waitting_sort_list)):
        smallest_index_is = find_smallest_elem_in_list(waitting_sort_list)
        ordered_list.append(waitting_sort_list.pop(smallest_index_is))
    return ordered_list

waitting_sort_list = [12, 12, 234, 56, 61, 2]

print(selection_sort_list(waitting_sort_list))