25大数据 13-1 线性查找
·
def binary_search(arr,target):
# 初始化左右边界
left=0
right=len(arr)-1
while left <= right:
#计算中间值
mid=(left+right)//2
if target == arr[mid]:
return mid
elif target > arr[mid]:
left = mid + 1
else:
right = mid - 1
return -1 #没找到
test_list=[1,3,6,8,12,15,23,26,31,35]
print("查找6的位置",binary_search(test_list,6))
'''
线性查找
线性查找是从头到尾逐个比较数组中的每个元素,直到找到目标值或遍历完整个数组。
1.从第一个元素开始,依次与目标值比较
2.如果相等,返回当前索引位置
3.如果遍历完所有元素都没找到,返回-1
'''
def X_x(arr,target):
for i in range(len(arr)):
if arr[i] == target:
return i
return -1
test_list=[1,3,6,8,12,15,23,26,31,35]
print("查找15的位置",X_x(test_list,15))
'''
选择排序
选择排序的核心思想是,每一轮从未排序部分选出最小(或最大)的元素,
放到已排序部分的末尾。
1.初始状态,所有元素未排序,即未排序区间为[0,n-1]
2.选取[0,n-1]中的最小元素,将其与索引0处的元素交换。数组前1个元素已排序。
3.选取[1,n-1]中的最小元素,将其与索引1处的元素交换。数组前2个元素已排序。
4.选取[2,n-1]中的最小元素,将其与索引2处的元素交换。数组前3个元素已排序。
5.以此类推。经过n-1轮选择与交换后,数组前n-1个元素已排序。
6.仅剩的一个元素必定是最大元素,无须排序,因此数组排序完成。
'''
def selection_sort(nums):
"""选择排序"""
n = len(nums) #数组长度
# 外循环:未排序区间为 [i, n-1]
for i in range(n - 1):
# 内循环:找到未排序区间内的最小元素
k = i #假设当前位置i的元素是最小值
for j in range(i + 1, n):
if nums[j] < nums[k]:
k = j # 记录最小元素的索引
# 将该最小元素与未排序区间的首个元素交换
nums[i], nums[k] = nums[k], nums[i]
return nums
nums=[6,2,8,1,5]
print("排序后的数组:",selection_sort(nums))
更多推荐

所有评论(0)