Lebih
Bagaimana untuk menemukan indeks dari elemen dalam sebuah array int?
Bagaimana saya dapat menemukan indeks nilai tertentu di Java array dari tipe int
?
Saya mencoba menggunakan Array.binarySearch
pada array disortir, itu hanya kadang-kadang memberikan jawaban yang benar.
73
17
Perhatikan bahwa solusi ini threadsafe karena itu menciptakan objek baru dari Daftar jenis.
Juga anda don't ingin memohon ini dalam satu lingkaran atau sesuatu seperti itu karena anda akan menciptakan objek baru setiap waktu
Pilihan lain jika anda menggunakan Jambu Koleksi Int.indexOf
Ini adalah pilihan yang tepat ketika ruang, waktu dan penggunaan kembali kode adalah pada premium. Hal ini juga sangat singkat.
Lihat di [API][1] dan mengatakan anda harus mengurutkan array pertama
Jadi:
Jika anda don't ingin mengurutkan array:
Salin metode ini ke dalam kelas anda
Anda perlu memilah nilai-nilai sebelum menggunakan pencarian biner. Jika tidak, cara manual adalah untuk mencoba semua ints di tab anda.
Metode alternatif yang bisa memetakan semua indeks untuk masing-masing nilai dalam peta<Integer, Integer>.
dan kemudian peta.mendapatkan nilai(value) untuk mendapatkan indeks.
Salam, Stéphane
@pst, terima kasih untuk komentar anda. Yang dapat anda posting lain alternatif metode ?
Anda bisa mengubahnya ke daftar, kemudian gunakan indexOf metode:
http://download.oracle.com/javase/1.5.0/docs/api/java/util/Arrays.html#asList(T...) http://download.oracle.com/javase/1.5.0/docs/api/java/util/List.html#indexOf(jawa.lang.Obyek)
Anda dapat menggunakan modern Jawa untuk memecahkan masalah ini. Silakan gunakan kode di bawah ini:
Sederhana:
Dalam kasus ada yang masih mencari jawaban-
Anda dapat menggunakan ArrayUtils.indexOf() dari Apache Commons Perpustakaan.
Jika anda menggunakan Java 8 anda juga dapat menggunakan Strean API:
public static int indexOf(int[] array, int valueToFind) { if (array == null) { return -1; } kembali IntStream.range(0, array.panjang) .filter(i -> valueToFind == array[i]) .findFirst() .orElse(-1); }
Pencarian biner: pencarian Biner juga dapat digunakan untuk mencari indeks dari elemen array dalam array. Tapi binary search hanya dapat digunakan jika array tersebut diurutkan. Java menyediakan kita dengan built-in function yang dapat ditemukan dalam Array perpustakaan dari Java yang akan rreturn indeks jika elemen hadir, yang lain itu mengembalikan -1. Kompleksitas akan menjadi O(log n). Di bawah ini adalah implementasi dari pencarian Biner.
Anda dapat melakukannya seperti ini:
}
Ditambahkan XOR :)
Anda dapat berjalan melalui array sampai anda menemukan indeks anda'kembali mencari, atau menggunakan
Daftar
sebagai gantinya. Perhatikan bahwa anda dapat mengubah array menjadi sebuah daftar dengansebagai daftar()
.Dalam metode utama menggunakan for loop: -ketiga untuk loop dalam contoh saya adalah jawaban untuk pertanyaan ini. -dalam contoh, saya membuat sebuah array dari 20 bilangan bulat acak, ditugaskan variabel jumlah terkecil, dan berhenti loop ketika lokasi hotel yang mencapai nilai terkecil saat menghitung jumlah loop.
Kode output semua angka-angka dan lokasi mereka, dan lokasi dari nomor terkecil diikuti dengan nomor terkecil.