总结:python关于一些基本排序算法的实现

来源:互联网 发布:sql语言 编辑:程序博客网 时间:2024/05/19 18:14

1 冒泡排序

 从第一个数开始和相邻的数逐个比大小,如果比相邻的数大(升序),则调换位置,然后第二个数依次类推。

def Bubble(array):    for j in range(len(array)-1):        for i in range(len(array)-j-1):            if array[i]>array[i+1]:                array[i],array[i+1] = array[i+1],array[i]    return arrayprint(Bubble([5,4,3,2,1]))

2 选择排序

 每次把选择的第一个数和后面的数做对比,记下最小数的编号,把它放在最前面的位置。

def Select(array):    smallest = 0    for j in range(len(array)):        for i in range(j,len(array)):            if array[i] < array[smallest]: #当前值 比之前选出来的最小值 还要小,那就把它换成最小值                smallest = i        else:            # print("smallest num is ",array[smallest])            array[j],array[smallest] = array[smallest],array[j]    return array
a = [ 9,1,22,31,45,3,6,2,11 ]print(Select(a))


3 插入排序

从第二个数依次开始和左边的数做比较,把他们插到合适的位置。

def Insert(array):    for index in range(1,len(array)):        value = array[index]        i = index-1        while i>=0:            if value<array[i]:                array[i],array[i+1] = value,array[i]                i -= 1    return arrayprint(Insert([5,4,3,2,1]))
4 希尔排序
希尔排序的实质就是分组插入排序,插入排序在对几乎已经排好序的数据操作时,效率高,即可以达到线性排序的效率,但插入排序一般来说是低效的,因为插入排序每次只能将数据移动一位。
def 

5 快速排序

通过把列表分成两部分,通过交换位置,使右边的数据始终比左边的数大,然后采用二分思想不断重复,最终完成排序。

def Quick(array,i,j):    if i>=j:        return 3    low = i    high = j    k = array[low]    while low<high:        while low<high and array[high]>k:            high -= 1        array[low] = array[high]        array[high] = k        while low<high and array[low]<=k:            low += 1        array[high] = array[low]        array[low] = k    Quick(array,i,low-1)    Quick(array,low+1,j)a = [5,1,3,6,7,9]Quick(a,0,5)print(a)







原创粉丝点击