写在前面,正如标题所说,这里是算法学习笔记(python3版),主要是代码实现和算法应用。上一篇笔记:python代码实现算法笔记 #1 Binary Search(迭代法、递归法)
例题1
如果一个数组它可以循环移位它的条目,使它成为排序,那么这个数组是“循环排序的”。 下面的列表是一个循环排序数组的例子:
A = [5, 6, 7, 1, 2, 3, 4, 8, 9, 10]
编写一个函数来确定循环排序数组中最小元素的索引。
例题2
将 bitonic 序列定义为这样的整数序列:
x_1 <= ... <= x_k >= ... >= x_n-1 for some k, 0 <= k < n.
例如:
1, 2, 3, 4, 5, 8, 4, 3, 2, 1
编写一个程序来找出这样一个序列中最大的元素。在上面的例子中,程序应该返回“8”。
我们假设存在这样一个“峰值”元素。
例题3
编写一个函数,该函数接受一个已排序整数数组和一个target,并从数组中返回该target第一次出现时的索引。
例如:
A = [-14, -10, 2, 108, 108, 243, 285, 285, 285, 401]
target = 108
应该返回 108 首次出现的下标 3
例题4
给定一个已排序整数数组。我们需要找到与给定数字最接近的值。 数组可以包含重复的值和负数。
Examples:
Input : arr[] = {1, 2, 4, 5, 6, 6, 8, 9}
Target number = 11
Output : 9
Input :arr[] = {2, 5, 6, 7, 8, 8, 9};
Target number = 4
Output : 5
这里只是举几个例题,从例题中可以看出,如果是给定的数组是已经排好序的话,可以优先考虑用二分搜索。