数组中的二进制搜索

马克

此代码使用中位数在数组中搜索数字。我在打印其在数组中的位置时遇到问题。此代码打印出数组的最大值。例如“ 234”“您的电话号码在99999上”“ 345”“您的电话号码在99998上”,依此类推。

import java.util.Scanner;
import java.util.Arrays;
public class sok2 {

public static void main(String[] args) {

int ListaLength = 100001; //Säger hur lång listan ska vara.
int [] array = new int[ListaLength];
for (int i = 0; i < ListaLength; i++) {
    array[i] = (int)(Math.random() * ((ListaLength - 1) + 1));
    Arrays.sort(array);
    System.out.println("Skriv in numret du letar efter.");
    int element = new Scanner(System.in).nextInt(); 

    boolean found = false;
    int min = 0;
    int max = array.length - 1;
    int median = max/2;

    while(! found && min <= max){
        if(array[median] == element){
            found = true;
        }
        if(array[median] < element){
            min = median + 1;
            median = (min + max) / 2;
        }
        else if(array[median] > element){
            max = median - 1;
            median = (max + min) / 2;
        }
    }
    // this is where i assume the problem is.
    System.out.println("Din siffra är på plats "+median);
}}}
马克

对不起,但我注意到了我的错误。

int ListaLength = 100001;
int [] array = new int[ListaLength];
for (int i = 0; i < ListaLength; i++) {
array[i] = (int)(Math.random() * ((ListaLength - 1) + 1));
 //there is supposed to be a closing bracket here.
Arrays.sort(array);
System.out.println("Skriv in numret du letar efter.");
int element = new Scanner(System.in).nextInt(); 

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章