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语言实现”的相关知识点: ### 1. 二分法搜索算法原理 二分法搜索算法,也称为折半查找算法,是一种在有序数组中查找特定元素的搜索算法。其基本思想...
main函数用于测试快速排序和二分法查找的正确性,首先输入数组的元素,然后对数组进行快速排序,最后使用二分法查找某个元素。 应用 快速排序和二分法查找有很多实际应用,例如: * 数据排序:快速排序可以快速地...
二分法是数值分析中的一种常用方法,用于求解非线性方程组。该方法的基本思想是将非线性方程转换为线性方程,然后通过迭代方法来求解。下面是使用 Matlab 实现二分法求解非线性方程组的详细过程: 二分法的原理 ...
设计函数能够用二分法查找元素对应下标,同时可以检测出用户是否输入有误,鲁棒性较好。
这段代码实现了基本的二分查找功能,用于在一个预定义的有序整数数组中查找用户输入的数字。代码的关键部分包括: 1. **初始化数组**:`int table[N]={0,2,4,6,8,10,12,14,16,18};` 这里定义了一个大小为10的整型...
1. **确定搜索范围**:首先,我们需要一个已排序的数组作为输入。这个数组可以是升序或降序排列。设定两个指针,`left` 和 `right`,分别指向数组的第一个元素和最后一个元素,它们定义了当前的搜索范围。 2. **...
二分法的优势在于其简单且易于实现,但缺点是收敛速度较慢,尤其是对于非单调函数,可能需要更多的迭代次数才能找到根。 二、迭代法 迭代法,特别是牛顿法,是一种更为灵活的求解非线性方程的方法。牛顿法基于函数...
二分法解二元方程在数值分析领域中是一种常用且高效的求根方法,尤其适用于在给定区间内连续函数的零点查找问题。本文将深入解析二分法的基本原理、适用条件及其在C/C++语言中的具体实现,旨在帮助读者理解和掌握这...
在“升序排列数组并用二分法查找所需元素”这个程序中,开发者可能实现了一个函数,该函数接收一个升序数组和一个目标值作为输入,然后运用二分法进行查找。这个函数通常会包括以下步骤: 1. 定义两个指针,分别...
输入一个待查找的整数(该整数一定在数组data中)。 输出格式 该整数在数组中的指标。 样例输入 一个满足题目要求的输入范例。 例1: 262 例2: 438 例3: 774 样例输出 与上面的样例输入对应的输出。 例1: 64 例...
Logistic生长曲线模型是指根据生长曲线模型进行预测的一组方法,其预测的是事件的一组观测数据随时间的变化符合生长曲线的规律。生长曲线模型通常经过三个阶段:发生、发展、成熟,每个阶段的发展速度各不相同。...
输入一组数据,通过二分法进行查找,返回查找下标号。
在这个给定的程序中,数组 `a[M]` 已经预设了十个整数,我们需要输入一个待查找的数字 `n`。程序首先初始化 `low` 和 `high`,接着调用 `scanf()` 函数读取用户输入的 `n` 值。然后执行上述的二分查找逻辑,找到目标...
从两个实例的对比中我们可以看到,高斯消去法相比雅可比迭代法解虽然更为精确,但该方法计算步骤繁琐,耗时长,在解决低阶稠密矩阵方程组时比较适用,一旦涉及的矩阵维数很高时要得到精确解并不理想,所以我们一般在...
在数值计算领域,找到方程的根和解决线性方程组是两个核心问题,分别对应了区间二分法和高斯消去法这两种重要的算法。MATLAB,作为一款强大的数值计算工具,为我们提供了便捷的平台来实现这些算法。本文将详细介绍这...
通常排序算法的时间复杂度为O(n log n),这在大数据集上可能会影响查找的效率,因此在多次查找相同数组的情况下,先排序再使用二分查找是可行的。 最后,示例用法中展示了一个主程序如何调用这个二分查找函数。主...
在深入学习这个源码时,你需要关注以下几个方面: - 数据结构的实现:顺序表和字典是如何被具体实现的,如何进行数据的插入、查找和删除操作。 - 二分查找的代码逻辑:理解查找过程中的边界处理和递归/循环实现。 - ...
在这个实例中,我们定义了一个名为`Search`的静态方法,该方法接受一个整数数组`array`和一个整数目标值`target`作为参数。我们用`left`和`right`分别记录搜索区间的起始和结束位置。`while`循环确保在找到目标值或...