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

Najbliższy element w tablicy

VPS Starter Arubacloud
0 głosów
141 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 1,706 wizyt
pytanie zadane 1 kwietnia 2019 w Java przez Paweł123 Nałogowiec (33,500 p.)
0 głosów
0 odpowiedzi 282 wizyt
0 głosów
1 odpowiedź 132 wizyt
pytanie zadane 26 marca 2019 w Java przez Dawidoo98 Użytkownik (600 p.)

92,453 zapytań

141,262 odpowiedzi

319,088 komentarzy

61,854 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.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...