`
wfwkiss
  • 浏览: 128580 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

二分法(输入一组数,输入要找的数,看二分法需要几次找到)

J# 
阅读更多
import java.io.BufferedReader;
import java.io.InputStreamReader;

public class TwoFenOrder{
	
	public int[] inputInteger(){
		System.out.println("please input Integer......");
		String temp=null;
		try{
			BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
			temp = br.readLine();
		}catch(Exception e){
			e.printStackTrace();
		}

		final int count = temp.length();
		int[] intArray = new int[count];
		
		for(int i=0 ; i<count ;i++){
			intArray[i] = Integer.valueOf(temp.substring(i,i+1));
		}
		
		//二分法要求数组必须是有序的。(使用递归)
		int tmpInt=0;
		for(int i=0 ;i <count ; i++){
			for(int j=i;j<count;j++){
				if(intArray[i] > intArray[j]){
					tmpInt = intArray[j];
					intArray[j] = intArray[i];
					intArray[i] = tmpInt;
				}
			}
		}
		
		//输出排列之后的数组
		for(int i : intArray){
			System.out.print(i + " ");
		}
		
		return intArray;
	}
	
	public void twoOrder(int[] intArray){
		System.out.println("please input Integer findValue !!!!!!!!");
		String temp = null;
		try{
			BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
			temp = br.readLine();
		}catch(Exception e){
			e.printStackTrace();
		}

		final int count =intArray.length;

		//要寻找的值
		int findValue = Integer.valueOf(temp);
		
		//起始start索引
		int start = 0;
		
		//终了end索引
		int end = count-1;
		
		//比较索引
		int index = (start + end)/2;
		
		//二分法查找次数
		int sum = 0;
		
		while(true){
			if(intArray[index] < findValue){
				start = index;
				index = (start + end)/2;
				sum++;
			}else if(intArray[index] > findValue){
				end = index;
				index = (start + end)/2;
				sum++;
			}else if(intArray[index] == findValue){
				System.out.println("使用二分法查找的次数是:" + sum);
				break;
			}//如果输入没有怎么办那?
		}
	}
	
	public static void main(String[] args){
		TwoFenOrder twoFenOrder = new TwoFenOrder();
		int[] intArray = twoFenOrder.inputInteger();
		twoFenOrder.twoOrder(intArray);
	}
}
分享到:
评论

相关推荐

    二分法实现查找数组中的最大次大值

    题目: 编程实现找出一组数的最大值和次大值 要求: 用二分法的策略实现; (2)写出实验报告。 一、 需求分析: 1、输入要输入数组元素的个数,为数组分配存储空间(动态数组); 2、输入数组元素; 3、利用二分法...

    二分法排序算法 C语言实现

    根据给定的文件信息,我们可以总结出以下关于“二分法排序算法C语言实现”的相关知识点: ### 1. 二分法搜索算法原理 二分法搜索算法,也称为折半查找算法,是一种在有序数组中查找特定元素的搜索算法。其基本思想...

    数据结构快速排序二分法查找

    main函数用于测试快速排序和二分法查找的正确性,首先输入数组的元素,然后对数组进行快速排序,最后使用二分法查找某个元素。 应用 快速排序和二分法查找有很多实际应用,例如: * 数据排序:快速排序可以快速地...

    数值分析作业3-二分法求解非线性方程组(含题目以及matlab求解代码).pdf

    二分法是数值分析中的一种常用方法,用于求解非线性方程组。该方法的基本思想是将非线性方程转换为线性方程,然后通过迭代方法来求解。下面是使用 Matlab 实现二分法求解非线性方程组的详细过程: 二分法的原理 ...

    用函数实现二分法查找数的下标 整型数组元素

    设计函数能够用二分法查找元素对应下标,同时可以检测出用户是否输入有误,鲁棒性较好。

    C语言实现的二分法快速查找|二分法排序|二分法查找C#

    这段代码实现了基本的二分查找功能,用于在一个预定义的有序整数数组中查找用户输入的数字。代码的关键部分包括: 1. **初始化数组**:`int table[N]={0,2,4,6,8,10,12,14,16,18};` 这里定义了一个大小为10的整型...

    二分法.zip_C++_二分法_二分法查找vc++

    1. **确定搜索范围**:首先,我们需要一个已排序的数组作为输入。这个数组可以是升序或降序排列。设定两个指针,`left` 和 `right`,分别指向数组的第一个元素和最后一个元素,它们定义了当前的搜索范围。 2. **...

    二分法 迭代法 非线性方程求解 实验报告含源码

    二分法的优势在于其简单且易于实现,但缺点是收敛速度较慢,尤其是对于非单调函数,可能需要更多的迭代次数才能找到根。 二、迭代法 迭代法,特别是牛顿法,是一种更为灵活的求解非线性方程的方法。牛顿法基于函数...

    二分法解二元方程(C/C++语言实现)

    二分法解二元方程在数值分析领域中是一种常用且高效的求根方法,尤其适用于在给定区间内连续函数的零点查找问题。本文将深入解析二分法的基本原理、适用条件及其在C/C++语言中的具体实现,旨在帮助读者理解和掌握这...

    erfenfa.rar_二分法_数组 二分

    在“升序排列数组并用二分法查找所需元素”这个程序中,开发者可能实现了一个函数,该函数接收一个升序数组和一个目标值作为输入,然后运用二分法进行查找。这个函数通常会包括以下步骤: 1. 定义两个指针,分别...

    蓝桥杯 试题 算法提高 二分法查找数组元素

     输入一个待查找的整数(该整数一定在数组data中)。 输出格式  该整数在数组中的指标。 样例输入 一个满足题目要求的输入范例。 例1: 262 例2: 438 例3: 774 样例输出 与上面的样例输入对应的输出。 例1: 64 例...

    logistic生长曲线模型预测,二分法,黄金分割法

    Logistic生长曲线模型是指根据生长曲线模型进行预测的一组方法,其预测的是事件的一组观测数据随时间的变化符合生长曲线的规律。生长曲线模型通常经过三个阶段:发生、发展、成熟,每个阶段的发展速度各不相同。...

    二分法查找

    输入一组数据,通过二分法进行查找,返回查找下标号。

    二分法排序

    在这个给定的程序中,数组 `a[M]` 已经预设了十个整数,我们需要输入一个待查找的数字 `n`。程序首先初始化 `low` 和 `high`,接着调用 `scanf()` 函数读取用户输入的 `n` 值。然后执行上述的二分查找逻辑,找到目标...

    二分法matlab程序.doc

    从两个实例的对比中我们可以看到,高斯消去法相比雅可比迭代法解虽然更为精确,但该方法计算步骤繁琐,耗时长,在解决低阶稠密矩阵方程组时比较适用,一旦涉及的矩阵维数很高时要得到精确解并不理想,所以我们一般在...

    数值计算的区间二分法实现求根和高斯消去法代码.rar

    在数值计算领域,找到方程的根和解决线性方程组是两个核心问题,分别对应了区间二分法和高斯消去法这两种重要的算法。MATLAB,作为一款强大的数值计算工具,为我们提供了便捷的平台来实现这些算法。本文将详细介绍这...

    python的二分法代码实现.docx

    通常排序算法的时间复杂度为O(n log n),这在大数据集上可能会影响查找的效率,因此在多次查找相同数组的情况下,先排序再使用二分查找是可行的。 最后,示例用法中展示了一个主程序如何调用这个二分查找函数。主...

    ASP.NET源码——顺序表字典二分法逐级检索.zip

    在深入学习这个源码时,你需要关注以下几个方面: - 数据结构的实现:顺序表和字典是如何被具体实现的,如何进行数据的插入、查找和删除操作。 - 二分查找的代码逻辑:理解查找过程中的边界处理和递归/循环实现。 - ...

    一个简单的C#二分查找实例

    在这个实例中,我们定义了一个名为`Search`的静态方法,该方法接受一个整数数组`array`和一个整数目标值`target`作为参数。我们用`left`和`right`分别记录搜索区间的起始和结束位置。`while`循环确保在找到目标值或...

Global site tag (gtag.js) - Google Analytics