• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Najbliższy element w tablicy

Cloud VPS
0 głosów
197 wizyt
pytanie zadane 19 marca 2020 w Java przez exebee Nowicjusz (120 p.)
edycja 19 marca 2020 przez exebee

Cześć,

Próbuję stworzyć kod, który wskaże mi najbliższy element podanemu indeksowi w  losowo wygenerowanej tablicy.

Pytanie brzmi-jaką drogą to znaleźć? Zastanawiałem się nad binarySearch ale to zawsze wskaże mi element mniejszy (a czasem ten większy jest bliżej)

Aktualnie jestem na takim etapie: 

import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;

public class Zad2 {
     public static void main(String[] args) {
        Random rand = new Random();
        Scanner scan = new Scanner(System.in);
        int sizeOfArray = rand.nextInt(6) + 5;
        int[] array = new int[sizeOfArray];
        for (int i = 0; i < array.length; i++) {
            int element = rand.nextInt(900) + 100;
            array[i] = element;

        }
        Arrays.sort(array);
        System.out.println(Arrays.toString(array));
        System.out.println("Provide index");
        int providedIndex = scan.nextInt();
        System.out.println("Your element is : " + array[providedIndex]);
        int closestValue = Arrays.binarySearch(array, providedIndex);

        System.out.println("Closest to Your index is : " + (closestValue += providedIndex) + "and its value of :" + array[closestValue]);


    }

}

 

komentarz 19 marca 2020 przez Aisekai Nałogowiec (42,190 p.)
Wrzuć ten kod w normalny bloczek, bo nic nie widać :D
komentarz 19 marca 2020 przez exebee Nowicjusz (120 p.)
poprawione

1 odpowiedź

0 głosów
odpowiedź 19 marca 2020 przez Aisekai Nałogowiec (42,190 p.)
Nie ma co tego sortować, skoro wyszukanie elementu najbliższego podanemu jest rzędu O(n), a samo sortowanie to w najlepszym wypadku O(nlogn). Po prostu przeleć każdy element z osobna i zapamiętuj indeks oraz dotychczasową najbliższą liczbę danej liczbie. Tylko musisz pamiętać, że dla indeksu równego wylosowanemu, musisz pominąć sprawdzanie.Wyszukiwanie binarne odpada, gdy tablica nie jest posortowana.

Podobne pytania

0 głosów
2 odpowiedzi 2,282 wizyt
pytanie zadane 1 kwietnia 2019 w Java przez Paweł123 Nałogowiec (33,540 p.)
0 głosów
0 odpowiedzi 458 wizyt
0 głosów
1 odpowiedź 211 wizyt
pytanie zadane 26 marca 2019 w Java przez Dawidoo98 Użytkownik (600 p.)

93,482 zapytań

142,414 odpowiedzi

322,761 komentarzy

62,894 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...