python 排序

来源:互联网 发布:三利毛线专卖店淘宝 编辑:程序博客网 时间:2024/06/07 11:02

python 排序

python用for in range的方式真是不习惯,所以搜了一下:

for i in range(1, 5):
print i
输出是1,2,3,4
range(a,b)返回是 a到b-1
range(a)返回是0到a-1
range(a,b,2)返回的是从a到b-1,每次步长是2
所以range(1,10,2)返回是1,3,5,7,9
想要逆序怎么办,比如循环是9,8,7,6…
只要把步长改成-1 for i in range(9,5,-1)
输出是9,8,7,6

插入排序

def InsertSort(Array,start,end):    for i in range(start+1,end+1):        for j in range(i,start,-1):            if Array[j]<Array[j-1]:                temp = Array[j]                Array[j] = Array[j-1]                Array[j-1] = temparray=[3,4,1,9,6,7,0,2,8,5,21,45,76,22,90,101,25,-1,33]InsertSort(array,0,18)print array

快速排序

def QuickSort(Array,start,end):    print start,end    if start<end:        p = Partition(Array,start,end)        QuickSort(Array,start,p-1)        QuickSort(Array,p+1,end)    else:        print "to the end"def Partition(Array,start,end):    tmp = Array[end]    i = -1    for j in range(end-start):        if Array[start+j]<tmp:            i = i+1            temp = Array[start+i]            Array[start+i] = Array[start+j]            Array[start+j] = temp    temp = Array[start+i+1]    Array[start+i+1] = Array[end]    Array[end] = temp    print start+i+1,Array    return start+i+1array=[3,4,1,9,6,7,0,2,8,5,21,45,76,22,90,101,25,-1,33]QuickSort(array,0,18)print array

堆排序

__author__ = 'zhang11'def HeapSort(array):    length = len(array)    for i in range(length,0,-1):        Sort(array,i)def Sort(array,length):    for i in range(length-1,0,-1):        if array[i]>array[i/2]:            temp = array[i]            array[i] = array[i/2]            array[i/2] = temp    temp = array[length-1]    array[length-1] = array[0]    array[0] = temparray=[3,4,1,9,6,7,0,2,8,5,21,45,76,22,90,101,25,-1,33]HeapSort(array)print array# 在这个堆排序中,用到的是大顶堆,每次Sort都是将最大的值放到树顶,即a[0]的位置,接着将它和最后一个数交换,使得a[i...n] 是一个有序序列# 对于高为n的二叉树,节点总数为2^n -1; 叶子节点总数为2^(n-1) 
0 0
原创粉丝点击