1、二分查找
def bin_search(array, left, right, x):
if right >= left:
mid = int(left + (right - left) / 2)
if array[mid] == x:
return mid
elif array[mid] > x:
return bin_search(array, left, mid-1, x)
else:
return bin_search(array, mid+1, right, x)
else:
return -1
array = [12, 13, 15, 16, 123, 125]
x = 123
result = bin_search(array, 0, len(array) - 1, x)
if result != -1:
print('该元素在数组的索引位置为{}'.format(result))
else:
print('该元素不在数组中')
2、线性查找
def xianxing(array,x):
for i in range(0,len(array)):
if array[i]==x:
return i
return -1
array=[1,2,34,56,234]
x=34
result=xianxing(array,x)
if result != -1:
print('该元素在数组的索引位置为{}'.format(result))
else:
print('该元素不在数组中')
3、 Python 直接插入排序
def insertion(array):
for i in range(1, len(array)):
j = i - 1
key=array[i]
while j >= 0 and array[j] > key:
array[j+1] = array[j]
j -= 1
array[j + 1] = key
array = [1, 23, 21, 123, 5]
print('排序前的列表:{}'.format(array))
insertion(array)
print('排序后的列表:{}'.format(array))
4、Python 快速排序
def partition(array, low, high):
i = (low - 1) # 最小元素索引
pivot = array[high] # 以列表右边数值为曲轴点
for j in range(low, high):
# 当前元素小于或等于 pivot,交换列表两元素位置
if array[j] <= pivot:
i = i + 1
array[i], array[j] = array[j], array[i]
# 将曲轴点插入到相应位置
array[i + 1], array[high] = array[high], array[i + 1]
# 返回曲轴点的位置
return i + 1
5、快速排序函数
def quick_Sort(array, low, high):
if low < high:
pi = partition(array, low, high)
quick_Sort(array, low, pi - 1)
quick_Sort(array, pi + 1, high)
array = [12,31,23,11,24,123,13,12]
print("排序前的数组:{}".format(array))
quick_Sort(array, 0, len(array) - 1)
print("排序后的数组:{}".format(array))
6、 选择排序
def selection(array):
for i in range(len(array)):
value = i
for j in range(i + 1, len(array)):
if array[j] < array[value]:
value=j
array[value], array[i] = array[i], array[value]
array = [12, 31, 23, 2, 5]
selection(array)
print("排序后的数组:{}".format(array))
7、冒泡排序
def BubbleSort(array):
for i in range(len(array)):
for j in range(0,len(array)-i-1):
if array[j]>array[j+1]:
temp=array[j]
array[j]=array[j+1]
array[j+1]=temp
array=[1,23,21,2,24]
print("排序前的数组:{}".format(array))
BubbleSort(array)
print("排序后的数组:{}".format(array))