binarySearch – nie rozumiem dlaczego tak pokazuje.

2018-04-09 22:34
Mamut
0
3
18
27
11
21
1
6
9
6
14

Sortowanie: [3, 18, 27, 11, 21, 1, 6, 9, 6, 14]
Sortowanie rosnąco: [1, 3, 6, 6, 9, 11, 14, 18, 21, 27]
Pozycja elementu: 1

Tworzę losową tablicę, losowanie 10 elementów do maksymalnie liczby 30. Tablica wylosowała się, następnie zrobiłem sortowanie, potem sortowanie rosnąco oraz metodę binarySearch, które pokazuje 1. Dlaczego pokazuje 1, jak to ma się do powyższego wyniku? Wiem, że binarySearch wyszukuje elementy tablicy, jeśli jest ona posortowana rosnąco - to już mam. W posortowanej tablicy szukam elementu 3, metoda binarySearch zwraca jego pozycję, jeśli elementu nie ma to jest jakaś liczba na minusie.

edytowany 1x, ostatnio: furious programming, 2018-04-09 23:24

Pozostało 580 znaków

2018-04-09 22:37
1

Elementy w tablicach są indeksowane od 0. Jeśli zwraca Ci 1 to chodzi o drugi element, czyli ok według tego co podałeś po sortowaniu rosnącym.

Pozostało 580 znaków

2018-04-09 22:39
Mamut
0

Ok, już rozumiem! Dzięki.

       int wiersz = 10;
        int kolumna = 10;
        int[][] tablica3 = new int[wiersz][kolumna];

        for (int i = 0; i < wiersz; i++) {
            for (int j = 0; j < kolumna; j++) {
                tablica3[i][j] = (i + 1) * (j + 1);
            }
        }

        for (int i = 0; i < wiersz; i++) {
            for (int j = 0; j < kolumna; j++) {
                System.out.println(tablica3[i][j] + "\t");
            }
            System.out.println();
        }

Mogę to jakoś zrobić, żeby wypisało mi po prostu kostkę 10x10? Bo teraz wypisuje mi:

1
2
3
4
5
6
7
8
9
10

2
4
6
8
10
12
14
16
18
20

itd.

edytowany 1x, ostatnio: furious programming, 2018-04-09 23:25

Pozostało 580 znaków

2018-04-09 23:12
0

To mój pierwszy kod w Java :]

       int wiersz = 10;
        int kolumna = 10;
        String wiersz_str = "";
        int[][] tablica3 = new int[wiersz][kolumna];

        for (int i = 0; i < wiersz; i++) {
            wiersz_str = "";
            for (int j = 0; j < kolumna; j++) {
                tablica3[i][j] = (i + 1) * (j + 1);
                wiersz_str = wiersz_str + String.valueOf(tablica3[i][j]) + ' ';
            }
            System.out.println(wiersz_str);
        }
Zamiast spacji można dać tabulator ('\t'), będzie lepiej wyglądać. - Silv 2018-04-09 23:56
Faktycznie, już chyba za późna pora że to przeoczyłem. Pomyliłem '\t' z '\n', dlatego wolałem bezpieczniej wstawić spacje :) Wydawało mi się, że '\t' w postu OP przechodzi do następnej linii. - Clarc 2018-04-10 00:13
@Clarc: w porządku, ja w życiu przegapiałem gorsze rzeczy. ;) - Silv 2018-04-10 00:47

Pozostało 580 znaków

Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0