查找和排序算法的python代码

时间: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字,全部文档内容请下载后查看。喜欢就下载吧 ……
查找和排序算法的python代码.doc 将本文的Word文档下载到电脑

    精彩图片

    热门精选

    大家正在看

    × 游客快捷下载通道(下载后可以自由复制和排版)

    限时特价:7 元/份 原价:20元

    支付方式:

    开通VIP包月会员 特价:29元/月

    注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
    微信:fanwen365 QQ:370150219