技术标签: 算法
二分查找是基于有序序列的查找算法。
现在需要从序列A={3, 7, 8, 11, 15, 21, 33, 52, 66, 88}中查询数字11和34的位置,其中序列下标从1到10。
代码:
#include <stdio.h>
// A[]为严格递增序列,left为二分下界,right为二分上界,x为欲查询的数
// 二分区间为左闭右闭的[left, right],传入的初值为[0, n-1]
int binarySearch(int A[], int left, int right, int x)
{
mid = (left + right) >> 1; // 取中点
while(left <= right)
{
if(A[mid] == x) return mid; // 找到x,返回下标
else if(A[mid] > x)
{
right = mid - 1; // 往左子区间[left, mid - 1]查找
}
else if(A[mid] < x)
{
left = mid + 1; // 往右子区间[mid + 1, right]查找
}
}
return -1;
}
int main()
{
const int n = 10;
int A[n] = {
3, 7, 8, 11, 15, 21, 33, 52, 66, 68};
cout << binarySearch(A, 0, n-1, 11) << endl;
cout << binarySearch(A, 0, n-1, 34) << endl;
return 0;
}
python多线程案例1:使用Thread创建子线程,执行多任务import timeimport threadingdef sing():for i in range(5):print("=======正在唱歌=======")time.sleep(1)def dance():for i in range(5):print("=======正在跳舞=======")time.sleep(1)de...
1.下载文件 pyecharts-0.5.9-py2.py3-none-any.whl2.在cmd中找到python路径,安装
get()函数返回指定键的值,如果值不存在字典中,则返回默认值。
一、html5中的template标签template标签,顾名思义,模板的意思HTML5提供的新标签,更加规范和语义化可以把列表项放入template标签中,然后进行批量渲染html中的template标签中的内容在页面中不会显示。但是在后台查看页面DOM结构存在template标签。这是因为template标签天生不可见,它设置了display:none;属性。二、template标签操作的属性和方法content属性:在js中template标签对应的dom对象存在content属性,对应
数据加密密钥 分发 自由和开源软件(FOSS)的开发人员,发行人和用户经常面临许多法律问题,需要牢记在心。 尽管经常讨论诸如版权,商标和专利之类的法律领域,但这并不是FOSS的唯一法律问题。 经常会引起注意的一个方面是出口管制。 令人惊讶的是,在公共网站上共享执行或使用加密功能的软件可能违反了美国出口管制法。 出口管制是各种法律规则的术语,它们共同对某些类型的出口施加限制,条件甚至是批发禁止...
解决BeanUtils.copyProperties不能复制集合类型1.背景:日常项目中,后台从“数据库”中获取的数据用DTO实体类接收,后台返回给“前台”的实体类是VO。 DTO和VO的属性字段个数大致相同(一般来说VO可能比DTO多)。 工作中,我们经常使用的是Spring的工具类BeanUtils.copyProperties对bean属性进行复制,BeanUtils.copyProperties只能对单个实体类进行复制,不能对封装多个实体类的list集合进行复制。2.代码示例:List<
模拟脉冲调制分为:PAM,PDM,PPMPAMPAM调制叫脉冲振幅调制,也就是说脉冲序列随m(t)变化得一种调制PDM抽样的脉冲周期不变,幅度不变,就是脉宽变因为噪声对信号的影响是加性得,所以这种调制完全不用担心噪声得影响,只需在最后加一个限幅器就可以了。PPM抽样的幅度和脉宽不变,就是脉冲得宽度在变这三种调制在书上285页上右有说明,自己看,很简单的以下对PAM讨论,因为它是最...
前端学习笔记04-JavaScript一、引入方式一、引入方式JS 有3种书写位置,分别为行内、内嵌和外部。1.行内式 JS< input type=“button” value=“点我试试” οnclick=“alert(‘Hello World’)” />优缺点:1.可以将单行或少量 JS 代码写在HTML标签的事件属性中(以 on 开头的属性),如:onclick。2.注意单双引号的使用:在HTML中我们推荐使用双引号, JS 中我们推荐使用单引号。3.可读性差, 在ht
算法设计中经常会用到递归,利用递归式的方法可以清晰地显示算法的整个过程,而对于分析算法的复杂度,解递归式就有了用处,这里的方法来自于《算法导论》。(一)代换法:实质上就是数学归纳法,先对一个小的值做假设,然后推测更大的值得正确性。由于是数学归纳法,那么我们就需要对值进行猜测。现在,我们看下面这个例子:我们先假设一个结论T(n) = O(lg(n - b)),并且假设对T(n / 2上取整)成立(这...
后来知道,侯爵本人的学习经历也和我接触过的人不太一样,他是设计背景出身的,不像科班出身的很自然就能养成编程思维,而是通过自学克服了入门的困境。接下来的这篇文章来自侯爵,讲述了一个非科班出身、从入门到精通的Python工程师是怎么炼成的。作者 | 侯爵(麻瓜编程创始人)在我决心开始学编程的时候,由于工作很忙,每天只能抽出来1小时去学习编程。那时候翻遍了知乎上大家推荐的国内外的书和课程,但教程中抽象枯...
vue路由的机制是这样的:不同的路由vue会刷新并跳转到相应路由,但如果是下一个点击触发的还是当前路由则当前路由页面不会被刷新要解决的问题是:很多时候是通过地址传参触发同一个页面就没法加载不同的数据解决思路:虽然下一个点击还是当前路由不会刷新当前路由,但我们知道$route路由数据此时是发生了变化的,比如$route里传递的参数信息会随着每次不同的点击发...
关于“enablePullDownRefresh”: “true”一、使用方式在 Page 中定义 onPullDownRefresh 处理函数,监听该页面用户下拉刷新事件。需要在 config 的window选项中开启 enablePullDownRefresh。当处理完数据刷新后,wx.stopPullDownRefresh可以停止当前页面的下拉刷新。二、错误处理在代...