Java 二分法查找最值问题。

4个回答

"不用排序的方法，用二分法找到该数组的最大值或者最小值。"

【首先】这不是一个特殊的数组
【其次】二分查找有个前，有序数组才能二分查找，，，无序的咋二分？？？

【无序数组如何二分？】答案是不能的，，至少本人未曾见过

2 年多之前 回复

java容器中的二分法查找

#include<stdio.h> int main() { int a[6]; int i,c; int low=0; int high=5; int mid; for(i=0;i<6;i++) scanf("%d",&a[i]); scanf("%d",c); for(i=0;i<6;i++) { mid=(high+low)/2; if(c==a[mid]) printf("%d",mid); if(c>a[mid]) low=mid+1; if(c<a[mid]) high=mid-1; } if(c!=a[mid]) printf("sorry"); } 若找到输出：数所在的下标，否则输出sorry 如何修改
java的二分法怎么写？？

function erfenfa(\$a,\$value,\$star,\$end) { if ( \$star > \$end ) { return "数据 \$value 不在范围内"; } echo "开始从 \$star - \$end 之间寻找 <br>"; \$middle = floor( (\$star+\$end)/2 ); \$middle_value = \$a[\$middle]; if ( \$value == \$middle_value ) { return true; } elseif ( \$value > \$middle_value ) //从左边找 { \$end = \$middle-1; erfenfa(\$a,\$value,\$star,\$end); } elseif ( \$value < \$middle_value ) //从右边找 { \$star = \$middle+1; erfenfa(\$a,\$value,\$star,\$end); } } \$length = count(\$a); \$star = 0; \$end = \$length-1; \$value = 50; echo "用二分法查找 \$value <br>"; \$s = erfenfa(\$a,\$value,\$star,\$end); var_dump(\$s);

python：用递归方法编写二分法查找函数 程序报错

#include <stdio.h> int binary_search_recursive(int arr[], int left, int right, int query); int main () { int arr[10]; int left, right, query; int i , res_r; printf ("请输入数据："); for (i = 0; i <= 9; i++) scanf ("%d" , &arr[i]); printf ("输入区间："); scanf ("%d%d" , &left , &right); printf ("输入要查找的数据："); scanf ("%d" , &query); res_r = binary_search_recursive(arr , left , right , query); printf ("%d\n" , res_r); return 0; } int binary_search_recursive(int arr[], int left, int right, int query) { int low = left , high = right , mid; int flag = 0; mid = (low + high) / 2; if (low > high) flag = -1; if (query == arr[mid]) flag = 1; if (arr[mid] > query) binary_search_recursive(arr , low , mid - 1 , query); else binary_search_recursive(arr , mid + 1 , high , query); if (flag == 1) return mid; if (flag == -1) return -1; }

C语言二分法求值（请帮忙找下问题）

def half_seek(point, seqence): a = len(readsx) b = a/2 if point <= readsx[b]: c = readsx[:b + 1] a = len(c) b = a/2 if point <= c[b]: c = c[:b + 1] a = len(c) b = a/2 else: c = c[b:] a = len(c) b = a/2 if point <= c[b]: c = c[:b + 1] a = len(c) b = a/2 else: c = c[b:] a = len(c) b = a/2 if point <= c[b]: else: c = readsx[b:] a = len(c) b = a/2 if point <= c[b]: c = c[:b + 1] a = len(c) b = a/2 else: c = c[b:] a = len(c) b = a/2 if point <= c[b]: c = c[:b + 1] a = len(c) b = a/2 格式不对。。。。。我就不粘贴了。。。。怎么写个循环呢？ 我是想写个函数以后用，目的是给一个值，给了一个由小到大的数列list形式，确定这个给的数能排哪个位置？

``` public class DateSort{ public static void main(String[] args){ Dates days[] = new Dates[10]; days[0] = new Dates(2013,3,1); // 初始化日期数组，任意赋值 days[1] = new Dates(2014,3,1); days[2] = new Dates(2013,4,5); days[3] = new Dates(2014,5,28); days[4] = new Dates(2012,8,9); days[5] = new Dates(2001,12,11); days[6] = new Dates(2005,10,10); days[7] = new Dates(2008,8,8); days[8] = new Dates(2015,9,29); days[9] = new Dates(1992,1,1); Dates day = new Dates(2015,9,29); System.out.println("未排序"); for(int i = 0;i<10;i++){ //输出数组，未排序 days[i].display(); } for(int i = 0;i < days.length;i++){ for(int j = i+1;j < days.length;j++){ if(days[i].compare(days[j]) == -1){ Dates d = days[i]; days[i] = days[j]; days[j] = d; } } } System.out.println("\n排序以后"); for(int i = 0;i<10;i++){ //排好序，输出数组 days[i].display(); } //二分法查找特定Day int start = 0; int end = days.length-1; int m = (start+end)/2; while(start<=end){ if(days[m].compare(day) == 0){ System.out.println("找到了与day相同的日期，下标i为：" + m); break; } if(days[m].compare(day) == 1){ end = m-1; } if(days[m].compare(day) == -1){ start = m+1; } m = (start+end)/2; if(start == end && days[m].compare(day) != 0) System.out.println("No Found"); } } } class Dates{ int year,month,day; Dates(int y,int m,int d){ year = y; month = m; day = d; } public int compare(Dates date){ return year > date.year ? 1 :year < date.year ? -1 :month > date.month ? 1 :month < date.month ? -1 :day > date.day ? 1 :day < date.day ? -1 : 0; } public void display(){ System.out.println(year + "-" + month + "-" + day); } } ``` 先new 一个day对象。然后用折半查找法在自定义的Dates数组中查找是否存在相同时间，若存在返回下标，不存在，打印No Found。 问题是：new了一个确实存在与days数组里的day对象。但是运行结果是No Found。 后来尝试着将排序的语句删掉，将原来的Dates数组的值，按顺序赋值。这样运行的结果是没问题的，都能查找到。 所以就不知道问题出在哪儿了！求大神指点一二

C++二维数组查找一个局部极大值

Java学习的正确打开方式

Python——画一棵漂亮的樱花树（不同种樱花+玫瑰+圣诞树喔）

HashMap 相关概念 HashTab、HashMap、TreeMap 均以键值对像是存储或操作数据元素。HashTab继承自Dictionary，HashMap、TreeMap继承自AbstractMap，三者均实现Map接口 **HashTab：**同步哈希表，不支持null键或值，因为同步导致性能影响，很少被使用 **HashMap：**应用较多的非同步哈希表，支持null键或值，是键值对...

linux系列之常用运维命令整理笔录

Python 基础（一）：入门必备知识

Python十大装B语法
Python 是一种代表简单思想的语言，其语法相对简单，很容易上手。不过，如果就此小视 Python 语法的精妙和深邃，那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点，并附上详细的实例代码。如能在实战中融会贯通、灵活使用，必将使代码更为精炼、高效，同时也会极大提升代码B格，使之看上去更老练，读起来更优雅。 1. for - else 什么？不是 if 和 else 才

2019年11月中国大陆编程语言排行榜
2019年11月2日，我统计了某招聘网站，获得有效程序员招聘数据9万条。针对招聘信息，提取编程语言关键字，并统计如下： 编程语言比例 rank pl_ percentage 1 java 33.62% 2 c/c++ 16.42% 3 c_sharp 12.82% 4 javascript 12.31% 5 python 7.93% 6 go 7.25% 7

JDK12 Collectors.teeing 你真的需要了解一下

“狗屁不通文章生成器”登顶GitHub热榜，分分钟写出万字形式主义大作

《程序人生》系列-这个程序员只用了20行代码就拿了冠军

11月8日，由中国信息通信研究院、中国通信标准化协会、中国互联网协会、可信区块链推进计划联合主办，科技行者协办的2019可信区块链峰会将在北京悠唐皇冠假日酒店开幕。 　　区块链技术被认为是继蒸汽机、电力、互联网之后，下一代颠覆性的核心技术。如果说蒸汽机释放了人类的生产力，电力解决了人类基本的生活需求，互联网彻底改变了信息传递的方式，区块链作为构造信任的技术有重要的价值。 　　1...