查找和排序算法的python代码
时间:2025-07-09
时间:2025-07-09
二分查找,顺序查找,冒泡排序,选择排序,插入排序,快速排序
一.查找算法:
1. 顺序查找:
普通程序:
def sequefind(l,x):
k=0
while k<=len(l)-1 and x!=l[k]:
k=k+1
if k>len(l)-1:
return 0
else:
return k
s=[2,6,7,3,9,98]
while(1):
key=int(input("待查找的数是:"))
n=sequefind(s,key)
if n==0:
print("未找到")
else:
print(key,"是第",n,"个元素")
改进程序:
def improveseque(l,x):
l[0]=x
k=len(l)-1
while x!=l[k]:
k=k-1
return k
l=[-1,10,11,90,3,32,5,6,18,15,19,35,9,22,91,88,98]
while(1):
key=int(input("待查找的数是:"))
n=improveseque(l,key)
if n==0:
print("未找到")
else:
print(key,"是第",n,"个元素")
2. 二分查找:
def halffind(arr,x):
l=0
h=len(arr)-1
while l<=h:
m=(l+h)//2
if arr[m]==x:
return m
else:
if x<arr[m]:
二分查找,顺序查找,冒泡排序,选择排序,插入排序,快速排序
h=m-1
else:
l=m+1
if l>h:
return -1
l=[3,5,6,9,10,11,15,18,19,22,32,35,88,90,91,98]
while(1):
key=int(input("待查找的数是:"))
n=halffind(l,key)
if n==-1:
print("未找到")
else:
print(key,"是第",n,"个元素")
二.排序算法:
1. 直接插入排序:
def insertsort(l,n):
for i in range(1,n,1):
temp=l[i]
j=i-1
while j>=0 and temp<l[j]:
l[j+1]=l[j]
j=j-1
l[j+1]=temp
return l
l=[1,4,13,-6,8,9]
print(l)
n=len(l)
print(insertsort(l,n))
2. 简单选择排序:
def selectsort(l,n):
for i in range(0,n-1,1):
k=i
for j in range(i+1,n,1):
if l[j]<l[k]:
k=j
if k!=i:
temp=l[i]
l[i]=l[k]
l[k]=temp
print(l)
l=[1,9,65,23,4,10]
print(l)
n=len(l)
selectsort(l,n)
二分查找,顺序查找,冒泡排序,选择排序,插入排序,快速排序
注:在定义函数的最后,print(list)和return list是不同的,不同之处见于最后列表的输出中。
3. 冒泡排序:
def bublesort(l,n):
for i in range(0,n-1,1):
for j in range(0,n-1-i,1):
if l[j]>l[j+1]:
temp=l[j]
l[j]=l[j+1]
l[j+1]=temp
print(l)
l=[2,-4,-27,8,9,17,93]
print(l)
n=len(l)
bublesort(l,n)
4. 快速排序:
def Partition(L,p,r): #定义快速分割程序
pivot=L[p] #选择左端点作为支点
i=p
j=r
while(1): #永久循环
while L[j]>=pivot: #指标左移
j=j-1
while L[i]<=pivot: #指标右移
i=i+1
if i<j:
temp=L[i] #交换L[i]与L[j]
L[i]=L[j]
L[j]=temp
else:
break #跳出永久循环
temp=L[j] #交换两个数
L[j]=L[p]
L[p]=temp
return j #返回指标j作为分割点
def QuickSort(L,p,r): #定义快速排序算法(采用递归求解)
if p<r:
q=Partition(L,p,r)
QuickSort(L,p,q-1)
QuickSort(L,q+1,r)
return L
print("本程序为快速排序")
while(1):
二分查找,顺序查找,冒泡排序,选择排序,插入排序,快速排序
L=[]
m=1
n=int(input("请输入要排序的数的个数:"))
while(1):
a=int(input("请输入要排序的数,每次请输入一个:")) L.append(a)
if m<n:
m=m+1
else:
break
p=int(input("请输入排序起始位置:"))
r=int(input("请输入排序结束位置:"))
print("排序的结果是:",QuickSort(L,p,r))
…… 此处隐藏:146字,全部文档内容请下载后查看。喜欢就下载吧 ……
上一篇:长安大学结构力学复习资料2