Как я мог бы добавить метод двоичного поиска с использованием пользовательского ввода в отсортированном массиве

#java #java.util.scanner #binary-search

#java #java.util.scanner #двоичный поиск

Вопрос:

Это сортировщик расходов, который мне нужно создать для моего класса. Мне нужен метод двоичного поиска, но я не знаю, с чего начать. Я знаю, что двоичный поиск работает из середины отсортированного массива, но объяснения с таких веб-сайтов, как Википедия, очень запутанны.

Код состоит из двух методов сортировки. Линейная сортировка и выбор. У меня есть пользовательский ввод в переменной size, который сообщает программе о размере массива.Может кто-нибудь привести мне пример и объяснить это в коде с использованием комментариев.

Я хочу, чтобы пользователь вводил данные, которые будут числом, которое они ищут. Если число равно 57, то массив просканирует середину массива и определит число. допустим, это число равно 56. 56 меньше 57, поэтому он будет отсчитываться вверх с этой точки, пока не найдет это число

 package project;

import java.io.*;
import java.util.*;
import java.util.Scanner;

public class project {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int Size;
        int order;
        System.out.println("Put in the amount of expenses you have");
        Size = sc.nextInt();
        System.out.println("put in all your expenses");
        int userInput[] = new int[Size];
        for (int i = 0; i < userInput.length; i  )
            userInput[i] = sc.nextInt();
        System.out.println(
                "do you want it ascending or descending order. If you want it in ascending press 1 or if you want descending press 2");
        order = sc.nextInt();
        System.out.print("expenses not sorted : ");
        printExpenses(userInput);
        if (order == 1) {
            expensesAscending(userInput);
        } else if (order == 2) {
            expensedescending(userInput);
        }
    }

    public static void printExpenses(int[] arr) {
        // this is were it is printed
        for (int i = 0; i < arr.length; i  ) {
            System.out.println(arr[i]   "$");
        }
    }

    public static void expensedescending(int arr[]) {
        // This is were the selection sort starts
        int N = arr.length;
        for (int i = 0; i < N; i  ) {
            int small = arr[i];
            int pos = i;
            for (int j = i   1; j < N; j  ) {
                if (arr[j] > small) {
                    small = arr[j];
                    pos = j;
                }
            }
            int temp = arr[pos];
            arr[pos] = arr[i];
            arr[i] = temp;
            System.out.println(": ");
            // Printing array after pass
            printExpenses(arr);
        }
    }

    public static void expensesAscending(int arr[]) {
        int N = arr.length;
        for (int i = 1; i < N; i  ) {
            int j = i - 1;
            int temp = arr[i];
            while (j >= 0 amp;amp; temp < arr[j]) {
                arr[j   1] = arr[j];
                j--;
                ;
            }
            arr[j   1] = temp;
            System.out.println(": ");
            // Printing array after pass
            printExpenses(arr);
        }
    }
}
  

Комментарии:

1. Я не уверен, что вы спросили, но похоже, что вы ищете объяснение алгоритма двоичного поиска. В таком случае я могу порекомендовать вам посмотреть это youtube.com/watch?v=P3YID7liBug и для вашего понимания того, как это работает, используйте это cs.armstrong.edu/liang/animation/web/BinarySearch.html

2. Как я мог бы добавить метод двоичного поиска к коду, отображаемому выше

3. Я знаю, как это работает, просто я не знаю, как реализовать это в моем коде

4. Вам придется объяснить, что вы хотите, чтобы он делал и где, потому что мы ничего не знаем

5. Я хочу, чтобы пользователь вводил данные, которые будут числом, которое они ищут. Если число равно 57, то массив просканирует середину массива и определит число. допустим, это число равно 56. 56 меньше 57, поэтому он будет отсчитываться вверх с этой точки, пока не найдет это число.