`
kevin_in_java
  • 浏览: 30458 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

算法导论2.3-7 二分查找变种题目

阅读更多

package Chapter2;
/*
 * 题目:算法导论2.3.7
 * 请给出一个运行时间为O(nlgn)的算法,使之能在给定一个由n个整数构成的集合S和另一个整数x时,
 * 判断出S中是否存在有两个其和等于S的数
 * 
 *算法思想:
 *1、默认集合S是排序过的,若果没有排序,先排序。。。各种排序方法。
 *2、本问题是二分查找的变形。。
 *  for i ←1to n
 *	     temp=x-array[i]
 *  	 二分查找temp
 *
 */
public class SearchSum {
	public static void main(String args[])
	{
		int[]s={1,3,6,9,45,68,106};
		int x=9;
		Index index = new SearchSum().getFittedIndex(s, x);
		if(null==index)
			System.out.println("can't find");
		else
		{
		System.out.println("index_1: "+index.getIndex_1());
		System.out.println("index_2: "+index.getIndex_2());
		}
	}
	
	public Index getFittedIndex(int []s,int x)
	{
		int result=-1;
		int i;
		for( i=0;i<s.length-1;i++)
		{
			int temp=x-s[i];
			//二分查找temp
			result = search(s,1,s.length-1,temp);
			if(result>=0)
				break;
		}
		if(result<0)
			return null;
		else
			return new Index(i,result);
	}
	public static int search(int[] array,int start,int end,int target)
	{
		int middle = (start+end)/2;
		if(target==array[middle])
			return middle;
		/*
		 * 当数列只剩两个元素时{start,end}
		 * 由于middle每次都等于start,故做特殊判断
		 * 
		 */
		if(end==start+1)
			if(target==array[end])
				return end;
			else
				return -1;
		if(target<array[middle])
			return search(array,start,middle,target);
		if(target>array[middle])
			return search(array,middle,end,target);
		return -1;
	}
}
class Index {
	private int index_1;
	private int index_2;
	public int getIndex_2() {
		return index_2;
	}
	public void setIndex_2(int index_2) {
		this.index_2 = index_2;
	}
	public int getIndex_1() {
		return index_1;
	}
	public void setIndex_1(int index_1) {
		this.index_1 = index_1;
	}
	public Index(int index_1, int index_2) {
		super();
		this.index_1 = index_1;
		this.index_2 = index_2;
	}
	
}

 

0
1
分享到:
评论
2 楼 panggezi 2011-11-20  
现在面试都考O(N)的实现了。
1 楼 panggezi 2011-11-20  
现在面试都考O(N)的实现了。

相关推荐

    算法导论课后习题2.3-7和思考题2-4答案源码

    《算法导论》是计算机科学领域的一本经典教材,它深入浅出地介绍了各种重要的算法,并提供了详尽的实现和分析。在这个压缩包中,包含了课后习题2.3-7“合并排序”和思考题2-4“逆序对”的解答源码。这两个问题都是...

    TarsosDSP-2.3-Manual.pdf

    TarsosDSP 库的定位 : 数字信号处理 ( DSP ) 算法都很复杂 , 涉及傅里叶变换 , 数字滤波器等算法 , 复变函数等数学理论 , 想想就很复杂 ; ① 小巧简单 : TarsosDSP 库在旨在减小函数库库的体量 , 可以简单地调用 ...

    麻省理工算法导论(introduction_to_algorithm)slide

    introduction_to_algorithm 中文版为算法圣经,此处整理资源来自 https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-046j-introduction-to-algorithms-sma-5503-fall-2005/index.htm 的...

    算法导论15.2-1矩阵链最优括号化方案

    算法导论第三版练习题15.2-2的C++实现方案

    算法导论22章课后习题答案

    最近在研习算法导论,发现课后习题的精彩程度甚至不亚于正文,对于算法导论的爱好者而言,这是一份不错的参考资料

    算法导论--编程经典

    算法导论--编程中经典的经典,值得每一位程序员用心品读

    算法导论--教师手册

    《算法导论--教师手册》是一本针对计算机科学专业学生及教师的重要参考书籍,由Thomas H. Cormen、Charles E. Leiserson、Ronald L. Rivest和Clifford Stein四位作者共同编撰,第二版由Thomas H. Cormen、Clara Lee...

    算法导论习题解答 4-4

    《算法导论》是计算机科学领域的一本经典教材,它深入浅出地介绍了各种重要的算法,并提供了详尽的分析和实现。题目中的“4-4”可能指的是书中的第四章第四个习题,通常涉及图算法或者动态规划等主题。由于具体描述...

    算法导论课件-经典.rar

    3. **排序与搜索**:快速排序、归并排序、堆排序、冒泡排序、二分查找等是常见的排序和搜索算法,它们在实际应用中广泛使用,学习这些算法有助于提高代码的效率。 4. **递归与分治策略**:递归是一种函数自我调用的...

    Python库 | pylzma-0.4.4-py2.3-win32.egg

    `pylzma`是Python对7-Zip的LZMA压缩算法的实现,7-Zip是一款广泛使用的开源压缩软件,以其高度的压缩效率而闻名。LZMA(Lempel-Ziv-Markov chain algorithm)是一种数据压缩算法,它基于预测的字典编码和自适应编码...

    算法导论-算法导论-算法导论

    其次,搜索算法是另一个重点,如二分查找、广度优先搜索(BFS)和深度优先搜索(DFS)。这些算法在解决查找问题和遍历复杂数据结构时起着关键作用。此外,书中还讨论了回溯法和分支限界法等高级搜索策略。 图算法...

    算法导论ppt-xm大学

    搜索算法方面,二分查找、线性查找以及哈希表的查找技术可能会被详细讨论。 在数据结构部分,PPT可能会涵盖数组、链表、栈、队列、树(二叉树、平衡查找树如AVL和红黑树)、图等基本数据结构。每个数据结构的特点、...

    算法导论--英文版--附习题解析

    算法导论,英文版,附习题解析 Introduction to Algorithms, Second Edition Thomas H. Cormen Charles E. Leiserson Ronald L. Rivest Clifford Stein The MIT Press

    算法导论.-.Homework

    例如,PS1可能会介绍基本的排序算法如冒泡排序、插入排序,以及查找算法如线性查找和二分查找。 2. **数据结构**:数据结构是算法的基础,作业中可能涉及到数组、链表、栈、队列、树、哈希表等。例如,PS4和PS5可能...

    Python库 | detoxed-0.1.2.3-py3-none-any.whl

    总的来说,`detoxed-0.1.2.3-py3-none-any.whl` 是一个针对Python 3编译的二进制库文件,用于提供特定的Python功能。用户可以通过pip安装,但具体的应用场景和功能需要通过查阅相关文档来了解。在Python开发中,合理...

    算法导论第二十章习题解答

    《算法导论》第二十章习题解答涵盖了各种高级算法问题,主要涉及图论和网络流等内容。在这一章中,作者深入探讨了如何解决实际问题,如最短路径、最大流最小割以及网络调度等问题。以下是部分习题的解析和相关知识点...

    算法导论 1-7章学习笔记

    本次上传的文件包含《算法导论》课程前七章的学习笔记,内容涵盖了基础算法(如插入排序、归并排序)、递归方程的解法、数据结构(如堆、二叉搜索树)的操作与分析,以及图论算法(如BFS、DFS)等。该笔记详细记录了...

    算法导论课后答案

    根据提供的信息,《算法导论》是一本非常经典的教材,涵盖了计算机科学中算法设计与分析的基础理论及实践应用。下面将针对题目中提到的部分章节进行详细的知识点解析。 ### 第2章:分治法 #### 2.1 分治法概念 - *...

    NTC测温中 经典温度查表算法--二分查找法.docx

    为了克服这一问题,本文将介绍一种经典的温度查表算法——二分查找法,并探讨其在NTC测温中的应用。 二分查找法是一种有效的在有序数组中查找特定元素的算法。其基本原理是,在每次查找过程中,算法都会将查找范围...

    算法导论原版-经典算法书籍,非常值得仔细推敲

    讲解算法导论的原版书籍,每个算法都提供伪码及正确性证明,值得一看

Global site tag (gtag.js) - Google Analytics