Python算法编写

来源:互联网 发布:免费网店推广软件 编辑:程序博客网 时间:2024/06/05 12:00

1.1冒泡排序(ps:比较次数较多)

a=[5,2,7,4,3,6,8,0,1,9]for i in range(len(a)-1):    for s in range(len(a)-i-1):        if a[s] < a[s+1]:            temp=a[s]            a[s]=a[s+1]            a[s+1]=tempprint(a)

1.2冒泡排序(ps:比较次数较少)

a=[5,2,7,4,3,6,8,0,1,9]for i in range(len(a)-1):    min=0    for s in range(len(a)-i-1):        if a[min] > a[s+1]:            min=s+1        temp=a[min]        a[min]=a[len(a)-i-1]        a[len(a)-i-1]=tempprint(a)


1.3冒泡排序(ps:比较次数更少)

a=[5,2,7,4,3,6,8,0,1,9]for i in range(len(a)-1):    min=0    for s in range(len(a)-1-i):        if a[min] > a[s+1]:            min=s+1    if a[min] != a[len(a)-1-i]:        temp=a[min]        a[min]=a[len(a)-i-1]        a[len(a)-1-i]=tempprint(a)


2. 快速排序(ps:快速排序是对冒泡排序的升级,  快速排序更适合与对随机数的排序)

a=[9,2,7,4,3,6,5,8,1]def quickScore(a,start,end):    temp=a[start]    for i in range(start+1,end):        if temp > a[i] :            temp2=a[i]            for n in reversed(range(start,i)):                a[n+1]=a[n]            a[start]=temp2    index=a.index(temp)    if index - start > 1 :        quickScore(a,start,index)    if end-1 - index > 1 :        quickScore(a,index+1,end)quickScore(a,0,9)print(a)


3.1插入排序--直接插入排序

编写思想以及步骤如下:

1.要排序的数组a=[9,2,7,4,3,6,5,8,1]2.定义一个指明已完成排序的指针,point=1while point<len(a):3.取出 point 指明的数字  temp=a=[point]4.定义数字插入的位置   index=-15.通过循环判定具体位置   for i in range(point):       if temp < a[i]:           index=i           break6.通过判断index是否为-1判定待插入数字是否需要插入   if index != -1:       for i in reversed(range(index,point)):           a[i+1]=a[i]       a[index]=point   point+=1print(a)
a=[9,2,7,4,3,6,5,8,1]bijiao=0jiaohuan=0point=1while point<len(a):    temp=a[point]    index=-1    for i in range(point):        bijiao+=1        if temp<a[i]:            index=i            break    if index !=-1:        for i in reversed(range(index,point)):            a[i+1]=a[i]            jiaohuan+=1        a[index]=temp    point+=1print(a)print('比较次数:'+str(bijiao))print('交换次数:'+str(jiaohuan))

3.2插入排序--希尔排序(ps:减半思想,希尔排序是在直接插入排序的基础上延伸而来)

a=[9,2,7,4,3,6,5,8,1]bijiao=0jiaohuan=0dk=len(a)while True:    dk=dk//2   #len(a)//2    两个斜杠:表示取整数    for n in range(dk):        point=dk+n        while point<len(a):            temp=a[point]            index=-1            for i in range(n,point,dk):                bijiao+=1                if temp<a[i]:                    index=i                    break            if index !=-1:                for i in reversed(range(index,point,dk)):                    a[i+dk]=a[i]                    jiaohuan+=1                a[index]=temp            point+=dk    if dk == 1:        breakprint(a)print('比较次数:'+str(bijiao))print('交换次数:'+str(jiaohuan))





原创粉丝点击