java算法:算法分析事例
假设:有N个银行卡,给定M个交易中任一笔交易是否涉及到该N个银行卡中的任意一张。(针对该运用,N可能很大,M可能巨大。估算目标运行时间。)
例一:顺序查找
- publicstaticintsequentialSearch(inta[],intv,ints,intr){
-
inti;
-
for(i=s;i<=r;i++){
-
if(v==a[i]){
-
returni;
- }
- }
-
return-1;
- }
public static int sequentialSearch(int a[], int v, int s, int r){
int i;
for( i = s; i <= r; i++){
if(v == a[i]){
return i;
}
}
return -1;
}
该方法检查v是否在先前存储的数a[s],a[s+1],...,a[r]中,方法从头开始造,依次与每个数进行比较。顺序查找对每个不成功的查找都要检查N个对象,对于成功查找平均约检查N/2个对象。
例二:折半查找
- publicstaticintbinarySearch(inta[],intv,ints,intr){
-
while(r>=s){
-
intm=(s+r)/2;
-
if(v==a[m]){
-
returnm;
- }
-
if(v<a[m]){
-
r=m-1;
-
}else{
-
s=m+1;
- }
- }
-
return-1;
- }
public static int binarySearch(int a[], int v, int s, int r){
while(r >= s){
int m = (s + r)/2;
if(v == a[m]){
return m;
}
if(v < a[m]){
r= m - 1;
}else{
s = m + 1;
}
}
return -1;
}
折半查找,前提是表中的数据是有序的(如:从小到大)。折半查找要检查的对象个数不会超过floor(lgN) + 1。注:floor()向下取整,ceil()向上取整,round()四舍五入。
当N翻倍的时候,折半查找的运行时间几乎没有变化,但是,顺序查找的运行时间却增加了一倍。显然,随着N的增长,对于巨大的M,顺序查找是不可行的,但是折半查找执行的速度确是不错的。
分享到:
相关推荐
### Java编写的递归算法的经典事例:全排列输出 #### 概述 本文将详细介绍一个用Java编写的递归算法实例,该实例用于实现字符数组的所有可能全排列。通过这个例子,我们可以深入理解递归的基本概念、工作原理以及...
- **字段查询 (Field Query)**:指定查询的字段,如`title:"搜索算法"`,只在标题字段中查找。 - **分数与排序 (Scoring & Sorting)**:Lucene会根据查询的相关性计算每个文档的得分,用于排序。可以通过`sort`参数...
一个软件为了快速开发,可能是使用Delphi或VB作为界面开发首选语言,底层的指令或核心算法,会使用C/C 处理,涉及数据处理的时候,为了安全和快速开发,会使用Javascript或Python等脚本语言实现数据分析处理。...
8. **性能评估**:模拟完成后,需要评估结果,例如计算平均等待时间、通行车辆数、拥堵情况等指标,这可能需要统计学和数据分析知识。 9. **实时性与并发处理**:在多车流或复杂交通场景下,模拟可能需要考虑并发和...
标题中的"一个简单的死循环事例"指的是一个能够无限重复执行的代码块,不会自行停止,除非受到外部干预。这通常是由于循环的退出条件没有得到满足导致的。 在描述中提到,“初学者可以借鉴一下,还凑合”,暗示了这...
《图书管理系统事例2》是针对图书管理领域的一个典型应用案例,它涵盖了软件工程中的多个重要阶段,包括需求分析、概要设计、详细设计以及用户手册的编制。这个系统旨在帮助图书馆高效地进行图书的录入、检索、借阅...
- **一致性哈希:** 可以选择使用一致性哈希算法来确定数据的存储位置,这有助于减少节点加入或离开集群时的数据迁移量。 - **自定义缓存策略:** 除了LRU策略外,还可以根据应用需求自定义缓存淘汰策略。 #### 六...
在源码分析方面,我们关注以下几个关键组件: 1. **ImageLoader**:是整个框架的入口,负责配置缓存策略、线程池等,并启动图片加载任务。 2. **ImageLoaderConfiguration**:用于设置各种配置参数,如内存缓存大小...
在IT领域,JSP(Java...在实际项目中,"JSP登陆事例"这个压缩包文件可能包含了实现上述功能的JSP页面、JavaBean、配置文件以及相关的测试数据。通过学习和分析这些文件,你可以更深入地理解JSP登录系统的实现细节。
- **编程语言掌握**:熟悉至少一种主流编程语言(如Java、C++、Python等),掌握其基本语法、常用数据结构及算法。 - **算法与数据结构**:熟练掌握常见的数据结构(数组、链表、栈、队列、哈希表、树、图等)以及...
- **算法和数据结构**:熟悉常见的排序、查找算法,理解复杂度分析,并能解决实际问题。 - **操作系统和网络**:了解操作系统原理,如进程、线程和内存管理,以及网络协议和模型。 - **数据库知识**:理解SQL语言,...
- **基础算法与数据结构**:熟悉常见的排序算法及其时间复杂度、空间复杂度,例如快速排序、冒泡排序等。 - **项目经验**:准备详尽的项目案例,包括项目背景、技术选型、遇到的问题及解决方案等。 - **技术细节**:...
1. **案例分析**:选取历年来的典型参赛作品进行分析,探讨其设计理念、技术实现和比赛表现。 2. **失败教训**:分享一些团队在比赛中遇到的问题和解决方法,以供后来者借鉴。 3. **技术创新**:突出展示在比赛中...
【描述】"开发demo,完整的可以运行的事例,可以完美实现"说明这个压缩包内的内容是一个开发的演示版本,它不仅包含了完整的代码或应用程序,而且这些代码或应用是可以直接运行的。"可以完美实现"表明这个DEMO已经...
2. **技能匹配**:列举你的专业技能,比如熟悉Java、Python、C++等编程语言,或者在云计算、大数据分析等方面的经验,确保这些技能与目标职位的要求相吻合。 3. **工作经验**:详述你在过去的工作中是如何应用这些...
例如:“我是一名拥有5年经验的软件工程师,曾在ABC公司负责过X项目,通过优化算法提高了系统性能30%。” 2. **你为什么离开上一家公司?** - 要保持积极正面,避免过多谈论负面因素。例如:“我在上一家公司的...
在这个部分,可以列出对应岗位的关键要求,并解释自己如何满足这些要求,如:“对于软件工程师的岗位,我理解其需要精通Java和Python编程,具备良好的问题解决能力和项目管理经验。我在过去的实习中已经积累了这些...