龙空技术网

python代码实现算法笔记 #2 Binary Search 例题

不止于编程 127

前言:

当前看官们对“python binary”都比较关心,看官们都需要剖析一些“python binary”的相关资讯。那么小编同时在网摘上网罗了一些对于“python binary””的相关内容,希望姐妹们能喜欢,我们一起来学习一下吧!

写在前面,正如标题所说,这里是算法学习笔记(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

这里只是举几个例题,从例题中可以看出,如果是给定的数组是已经排好序的话,可以优先考虑用二分搜索。

标签: #python binary