十种经典排序算法

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

 

posted @ 2019-06-10 19:07  飞蝎儿  阅读(332)  评论(0编辑  收藏  举报