Rumah  >  Artikel  >  Java  >  Java menggunakan fungsi binarySearch() kelas Koleksi untuk melakukan carian binari dalam koleksi tersusun.

Java menggunakan fungsi binarySearch() kelas Koleksi untuk melakukan carian binari dalam koleksi tersusun.

王林
王林asal
2023-07-27 08:58:451355semak imbas

Java menggunakan fungsi binarySearch() kelas Koleksi untuk melakukan carian binari dalam koleksi tersusun

Carian binari ialah algoritma yang cekap untuk mencari elemen tertentu dalam koleksi tersusun. Di Java, kita boleh menggunakan fungsi binarySearch() kelas Koleksi untuk melaksanakan carian binari. Artikel ini akan memperkenalkan cara menggunakan fungsi binarySearch() untuk mencari dalam koleksi tersusun dan memberikan contoh kod khusus.

Idea asas algoritma carian binari adalah untuk membandingkan elemen yang akan dijumpai dengan elemen tengah set tersusun Jika elemen tengah sama dengan elemen yang akan dijumpai, carian berjaya jika tengah elemen lebih besar daripada elemen yang akan ditemui, ia berada di separuh kiri set Teruskan mencari sebahagiannya jika elemen tengah lebih kecil daripada elemen yang akan dijumpai, teruskan mencari di bahagian kanan set. Dengan terus menyempitkan skop carian, elemen sasaran akhirnya boleh ditemui atau ditentukan untuk tidak wujud dalam koleksi.

Di Java, kita boleh menggunakan fungsi binarySearch() kelas Collections untuk melaksanakan carian binari. Takrif fungsi ini adalah seperti berikut:

public static int binarySearch(Listf943c60feb13a35b673a814e7318e011> list, T key)

Fungsi ini menerima koleksi tersusun yang melaksanakan antara muka Sebanding dan elemen ke ditemui sebagai Parameter dan mengembalikan nilai indeks elemen dalam koleksi. Jika elemen tidak wujud dalam koleksi, nombor negatif dikembalikan iaitu nilai negatif kedudukan di mana elemen harus dimasukkan tolak satu (iaitu - (kedudukan sisipan + 1)).

Berikut ialah contoh kod untuk carian binari menggunakan fungsi binarySearch() kelas Koleksi:

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class BinarySearchExample {

public static void main(String[] args) {
    List<Integer> list = new ArrayList<>();
    list.add(1);
    list.add(3);
    list.add(5);
    list.add(7);
    list.add(9);

    int index = Collections.binarySearch(list, 5);
    if (index >= 0) {
        System.out.println("Element found at index " + index);
    } else {
        System.out.println("Element not found. Insertion point: " + (-(index + 1)));
    }
}

}

Dalam kod di atas, kami mencipta ArrayList bagi integer, yang mengandungi beberapa integer tersusun. Kami memanggil fungsi binarySearch() kelas Koleksi untuk mencari nilai indeks elemen 5 dalam koleksi. Memandangkan elemen wujud dalam koleksi, nilai indeks elemen dikembalikan. Akhirnya kami akan mencetak "Elemen ditemui pada indeks 2".

Jika kita mencari elemen dalam set yang tidak wujud, katakan 4, kita akan mendapat nombor negatif yang menunjukkan kedudukan di mana elemen itu perlu dimasukkan. Dalam kod di atas, kerana 4 harus dimasukkan pada indeks 1, nombor negatif yang dikembalikan ialah -(1+1)=-2. Selepas melaksanakan kod kita akan melihat output "Elemen tidak dijumpai. Titik sisipan: -2".

Dengan menggunakan fungsi binarySearch() kelas Koleksi, kami boleh melakukan carian binari dengan mudah dalam koleksi tersusun. Kerumitan masa algoritma ini ialah O(logN), jadi carian binari mempunyai kecekapan dan kelebihan yang tinggi apabila memproses data berskala besar.

Ringkasan:
Artikel ini memperkenalkan kaedah menggunakan fungsi binarySearch() kelas Koleksi untuk melakukan carian binari dalam koleksi tersusun di Jawa. Dengan menggunakan fungsi ini, kita boleh mencari dengan cepat kedudukan elemen tertentu dalam koleksi. Saya berharap melalui pengenalan dan contoh kod artikel ini, pembaca dapat menguasai aplikasi dan penggunaan algoritma carian binari dan meningkatkan kecekapan dan kemahiran mereka dalam pengaturcaraan.

Atas ialah kandungan terperinci Java menggunakan fungsi binarySearch() kelas Koleksi untuk melakukan carian binari dalam koleksi tersusun.. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn