排序算法小结(python 实现)

来源:互联网 发布:网络黄金egd还有希望吗 编辑:程序博客网 时间:2024/06/07 17:39

1 直接插入排序

#每次将一个待排元素按照其大小排到合适的位置def insertsort(value):    n = len(value)    for i in range(1,n):        temp = value[i]        #print(temp)        j = i-1        while j >= 0 and temp < value[j]:            value[j+1] = value[j]            j -= 1        value[j+1] = temp    return valueprint(insertsort(l))

2 冒泡排序

#每趟比较出最大的放最后def bubblesort(value):    n = len(value)    flag = 0    for i in range(n):        for j in range(n-i-1):            if value[j] > value[j+1]:                value[j+1], value[j] = value[j], value[j+1]                flag = 1        if flag == 0:            break    return valueprint(bubblesort(l))

3 快速排序

#每次将轴放到合适的位置def quicksort(value,l,r):    i,j = l,r    if l<r:        temp = value[l]        while i != j:            while i<j and value[j]>temp:                j -= 1            if i<j:                value[i] = value[j]                i += 1            while i<j and value[i]<temp:                i += 1            if i<j:                value[j] = value[i]                j -= 1        value[i] = temp        quicksort(value,l,i-1)        quicksort(value,i+1,r)quicksort(l,0,len(l)-1)print(l)

4 选择排序

#每次选最小的def selectsort(value):    l = len(value)    for i in range(l):        temp = value[i]        k = i        for j in range(i+1,l):            if value[j]<temp:                temp = value[j]                k = j        value[k] = value[i]        value[i] = temp    return valueprint(selectsort(l))

5 堆排序

#建堆,注意下标def adjust_heap(value,i,n):    l = 2*i    r = 2*i+1    max = i    if l<=n:        if value[l]>value[i]:            max = l        if r<=n and value[r]>value[max]:            max = r        if max != i:            value[max],value[i] = value[i],value[max]            adjust_heap(value,max,n)def heap_sort(value):    n = len(value)-1    for i in range(n/2,0,-1):        adjust_heap(value,i,n)    for j in range(n,1,-1):        value[1],value[j] = value[j],value[1]        adjust_heap(value,1,j-1)    return valueprint(heap_sort(l))
原创粉丝点击