常见算法 python实现

冒泡排序:

def maopao(a):
#a=[12,0,-9,6,1,23,45]
for i in range(0,len(a)-1):
for j in range(0,len(a)-1):
if a[j]<a[j+1]:
k=a[j]
a[j]=a[j+1]
a[j+1]=k
print(a)
a=[12,0,-9,6,1,23,45]
maopao(a)

输出结果:
[45, 23, 12, 6, 1, 0, -9]

选择排序:


ef xuanze(a):
for i in range(0,len(a)-1):
for j in range(i+1,len(a)):
if a[j]<a[i]:
k=a[j]
a[j]=a[i]
a[i]=k
print(a)
xuanze(a)
输出结果:
[-9, 0, 1, 6, 12, 23, 45]

二分查找:


def erfen(a,b):
min=0
mid =int((len(a)-1) / 2)
# print(a[mid])
max=len(a)-1
while(a[mid]!=b):
if(a[mid]<b):
min=mid+1
elif(a[mid]>b):
max=mid-1
mid=int((max+min)/2)
if(min>max):
return -1
return mid
c=[1,2,3,44,66,77,78,88]
b=2
print(erfen(c,b))

输出结果:
1

插入排序:

def charu(a):
for i in range(1,len(a)-1):
# 设置数组中的第2个元素为第一次循环要插入的数据
temp=a[i]
j=i-1
while(j>=0 and temp<a[j]):#如果要插入的元素小于第j个元素,就将第j个元素向后移
a[j+1]=a[j]
j=j-1
a[i]=temp #直到要插入的元素不小于第j个元素
print(a)

charu(a)

输出结果:
charu(a)


原文地址:https://www.cnblogs.com/zzzao/p/9198313.html