15-2 12.11
defbinary_search(arr,target):left=0right=len(arr)-1whileleft<=right:mid=(left+right)//2ifarr[mid]==target:returnmid# 找到了,返回索引elifarr[mid]<target:left=mid+1# 目标在右边else:right=mid-1# 目标在左边return-1# 返回-1表示没找到test_list=[1,3,5,7,9,11,13,15]print("查找7的位置:",binary_search(test_list,7))# 应该返回3print("查找9的位置:",binary_search(test_list,9))# 应该返回4print("查找8的位置:",binary_search(test_list,8))# 应该返回-1''' 线性查找 线性查找指按一定的顺序从头开始检查数组中每一个元素, 直到找到所要寻找的特定值为止。 '''defsearch(arr,n,x):foriinrange(0,n):if(arr[i]==x):returnireturn-1# 在数组 arr 中查找字符 Darr=['A','B','C','D','E']x='D'n=len(arr)result=search(arr,n,x)if(result==-1):print("元素不在数组中")else:print("元素在数组中的索引为",result)''' 选择排序 工作原理:首先在未排序序列中找到最小(大)元素, 存放到排序序列的起始位置。 然后,再从剩余未排序元素中继续寻找最小(大)元素, 然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。 '''defpaixu(shuzu):qi=[]whilelen(shuzu)>0:qi.append(max(shuzu))shuzu.remove(max(shuzu))returnqi luan=[90,50,26,98,45,21,26,2,87,51]print(f"已排好序,顺序为{paixu(luan)}")