链表链接
eg:
class Node():
def __init__(self,data,next=None):
self.data=data
self.next=next
class Link():
def __init__(self):
self.head=None
def add(self,data):
one=Node(data)
if self.head==None:
self.head=one
else:
n=self.head
while n.next!=None:
n=n.next
n.next=one
def dayin(self):
n=self.head
while n!=None:
print(n.data)
n=n.next
x=Link()
x.add(1)
x.add(2)
x.add(10)
x.dayin()
结果为:1 2 10
队列思想
eg:
a=[]
while True:
bh=int(input("请输入编号:"))
if bh==1:
data=int(input("请输入入队数据:"))
a.append(data)
elif bh==2:
if len(a)==0:
print("空队列")
else:
print("删除第一个元素",a[0])
del a[0]
elif bh==3:
print(a)
else:
break
结果为:
栈的思想
eg:
a=[]
while True:
bh=int(input("请输入编号:"))
if bh==1:
d=int(input("请输入数据:"))
a.append(d)
elif bh==2:
if len(a)==0:
print("空栈")
else:
print("出栈数据",a.pop())
elif bh==3:
print(a)
else:
break
结果为:
折半查找的递归算法
def zbcz(a,low,high,key): #a代表要查找的范围,low表示从哪个位置开始查找
#high代表,结束的最高位置,key代表要查找的内容
if low<=high: #如果范围正常,那么继续查找
mid=(low+high)//2 #从中间位置开始查找
if a[mid]==key: #如果等于中间的那个值,返回中间的下标
return mid
elif key>a[mid]: #如果要找的值比中间的值大,那么向右找
return zbcz(a,mid+1,high,key)
elif key<a[mid]: #如果要找的值比中间的值小,那么向左找
return zbcz(a,low,mid-1,key)
else: #范围不正常了,结束,并返回-1表示查找未成功
return -1
a=[i for i in range(1,11)]
key=int(input("请输入要查找的数:"))
wz=zbcz(a,0,len(a)-1,key)
print(wz)
冒泡排序
eg:
#while循环
a=[5,4,3,2,1]
i=0
while i<len(a)-1: #i代表比较的趟数,n个数比较n-1趟
j=0
while j<len(a)-1-i: #j代表比较的次数,n个数比较n-1次,并且n还控制着下标,从0到n-2结束
if a[j]>a[j+1]: #如果前面的数比后面的大,那就交换
a[j],a[j+1]=a[j+1],a[j] #交换
j=j+1 #比较次数的步长+1
i=i+1 #比较趟数的步长+1
print(a)
# for循环
a=[5,4,3,2,1]
for i in range(len(a)-1):
for j in range(len(a)-i-1):
if a[j]>a[j+1]:
a[j],a[j+1]=a[j+1],a[j]
print(a)
简单选择排序
while循环
a=[5,4,3,2,1]
i=0
while i<len(a)-1: #抽出n-1个数,进行比较。因为只剩下最后一个数的时候不需要再排序
min=i #min是剩下的开头的第一个数据。然后拿此数分别跟后面的数比较
j=i+1
while j<len(a): #比较min后面的数。如果此数比最小值小,那么记录此最小值min
if a[j]<a[min]:
min=j
j=j+1
if min!=i: #如果min指向的位置不是开头的第一个数据,把最小值放在开头的位置
a[min],a[i]=a[i],a[min]
i=i+1
print(a)
for循环
a=[5,4,3,2,1]
for i in range(len(a)-1):
min=i
for j in range(i+1,len(a)):
if a[j]<a[min]:
min=j
if min!=i:
a[min],a[i]=a[i],a[min]
print(a)
求一个列表里重复的内容
eg:
a=[1,1,2,2,2,3,3,3,3,4,4]
b=set(a)
print(b)
for i in b:
print(i,"出现了",a.count(i))
结果为: