声明:此文参考自 https://facert.gitbooks.io/python-data-structure-cn;
一、冒泡排序
冒泡排序需要多次遍历列表。它比较相邻的项并交换那些无序的项。每次遍历列表将下一个最大的值放在其正确的位置。实质上,每个项“冒泡”到它所属的位置。
下图展示了冒泡排序的第一次遍历。阴影项正在比较它们是否乱序。如果在列表中有 n 个项目,则第一遍有 n-1 个项需要比较。重要的是要注意,一旦列表中的最大值是一个对的一部分,它将不断地被移动,直到遍历完成。
def bubble_sort(arr): count = len(arr) for i in range(count): for j in range(count - i - 1): if arr[j] > arr[j + 1]: arr[j+1], arr[j] = arr[j], arr[j+1] print arr return arr
二、选择排序
选择排序改进了冒泡排序,每次遍历列表只做一次交换。为了做到这一点,一个选择排序在他遍历时寻找最大的值,并在完成遍历后,将其放置在正确的位置。与冒泡排序一样,在第一次遍历后,最大的项在正确的地方。 第二遍后,下一个最大的就位。遍历 n-1 次排序 n 个项,因为最终项必须在第(n-1)次遍历之后。
def selection_sort(arr): count = len(arr) # max_position = 0 for i in range(count): max_position = 0 for location in range(count - i - 1, 0, -1): if arr[location] > arr[max_position]: max_position