Это сортировщик расходов, который мне нужно сделать для моего класса.Мне нужен метод двоичного поиска, но я не знаю, с чего начать.Я знаю, что бинарный поиск работает с середины отсортированного массива, но объяснения с таких сайтов, как Википедия, очень запутанные.
Код состоит из двух методов сортировки.Линейная и селекционная сортировка.У меня есть пользовательский ввод переменной размера, который сообщает программе о размере массива. Может кто-нибудь дать мне пример и объяснить его в коде с помощью комментариев.
Я хочу, чтобы пользователь дал ввод, которыйбудет номер, который они ищут.Если число равно 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 && temp < arr[j]) {
arr[j + 1] = arr[j];
j--;
;
}
arr[j + 1] = temp;
System.out.println(": ");
// Printing array after pass
printExpenses(arr);
}
}
}