十种经典排序算法
1、冒泡排序
算法步骤:
(1)
def BubbleSort(array): for i in range(1, len(array)): # 共需要len(array)-1趟 flag = True # 设置一个标志flag,如果这一趟没有发生元素的交换,说明排序已经完成,直接退出循环 for j in range(len(array)-i): # 每趟需要len(array)-i趟排序 if array[j] > array[j+1]: array[j],array[j+1] = array[j+1], array[j] flag = False if flag: break return array
2.选择排序
算法步骤:
(1)首先在未排序的数组中找到最小数,存在已排序的序列的起始位置
(2)再从未排序的序列中找到最小数,将它放在已排序序列的末尾
(3)重复第二步操作,直到所有元素排序完成。
# 数组前面存放已排序的序列,后面存放未排序的
def SelectionSort(array): for i in range(len(array)-1): # 经过len(array) - 1 次 i 代表已排序的元素 min = i for j in range(i+1, len(array)): # 将min指向的元素与未排序的元素进行比较 j 代表未排序元素索引(i+1,len(array)) if array[min] > array[j]: min = j if not min == i: array[i], array[min] = array[min],array[i] return array
3.插入排序
算法步骤:
(1)将数组的第一个元素作为有序序列,其他元素作为无序序列
(2)从第二个元素开始循环,将元素插入有序序列(从末尾开始比较)如果元素大于待插入元素,就将该元素后移一位。
def InsertSort(array): for i in range(1, len(array)): temp = array[i] # 将待插入元素存入temp
j = i while j > 0 and array[j-1] > temp: # 从末尾开始比较 array[j] = array[j-1] j -= 1 if not j == i: # 如果存在比待插入元素大的 array[j] = temp return array