近期学习的几种算法基础代码合集

以下这些事冒泡排序、选择排序和二分查找的基础代码(顺序查找不放了)的基础代码。代码的变形有很多,但是理解好基础代码事理解变形代码的基础。

冒泡排序

a=[8,4,5,6,9,7,2]
b=[8,4,5,6,9,7,2]
na=len(a)
nb=len(b)
#升序,上浮
for i in range(na-1):
    for j in range(na-2,i-1,-1):
        if a[j]>a[j+1]:
            a[j],a[j+1]=a[j+1],a[j]
#升序,下沉
for i in range(nb-1):
    for j in range(0,nb-i-1):
        if b[j]>b[j+1]:
            b[j],b[j+1]=b[j+1],b[j]
print(a)
print(b)

c=[2,4,5,6,7,8,9]
d=[2,4,5,6,7,8,9]
nc=len(c)
nd=len(d)
#降序,上浮
for i in range(nc-1):
    for j in range(nc-2,i-1,-1):
        if c[j]<c[j+1]:
            c[j],c[j+1]=c[j+1],c[j]
#降序,下沉
for i in range(nd-1):
    for j in range(0,nd-i-1):
        if d[j]<d[j+1]:
            d[j],d[j+1]=d[j+1],d[j]
print(c)
print(d)

选择排序

a=[39,17,41,14,16]
for j in range(len(a)-1):
    minindex=j
    for i in range(j,len(a)):
        if a[minindex]>a[i]:
            minindex=i
    a[j],a[minindex]=a[minindex],a[j]
print(a)

二分查找

a=[1,6,8,9,15,16,20,28,30]
key=int(input("你要查找的数字:"))
flag=False
n=len(a)
i=0 ; j=n-1

while i<j:
    m=(i+j)//2
    if a[m]==key:
        flag=True
        break
    elif key<=a[m]:
        j=m-1
    else:
        i=m+1
        
if flag:
    print("找到了,下标为"+str(m))
else:
    print("没找到")