Rumah >Java >javaTutorial >Mencari lwn. Isih dalam Java: Perbezaan Utama dan Aplikasi

Mencari lwn. Isih dalam Java: Perbezaan Utama dan Aplikasi

Susan Sarandon
Susan Sarandonasal
2025-01-16 12:28:01874semak imbas

Artikel ini membezakan algoritma pencarian dan pengisihan Java, menyerlahkan fungsi, kaedah dan kerumitan masa yang berbeza. Ia menyediakan contoh dan pelaksanaan praktikal, seperti Merge Sort untuk organisasi data dan Carian Binari untuk mendapatkan semula yang cekap, mempamerkan keupayaan menyelesaikan masalah dunia sebenar mereka.

Di Java, pemahaman yang kukuh tentang algoritma carian dan pengisihan, serta perbezaan utamanya, adalah penting untuk kefungsian aplikasi dan pengurusan data yang berkesan. Pencarian menentukan tepat data tertentu dalam set data, manakala pengisihan menyusun semula data itu sendiri. Artikel ini menggunakan contoh untuk meneroka perbezaannya dalam tujuan, metodologi dan aplikasi.

Perbezaan teras antara algoritma pencarian dan pengisihan Java terletak pada objektif, output, kecekapan dan kerumitan masanya. Rujuk Jadual 1 untuk analisis perbandingan.

Jadual 1 Mencari lwn. Isih dalam Java Searching vs. Sorting in Java: Key Differences and Applications

Pemilihan algoritma selalunya bergantung pada hasil yang diingini, keperluan aplikasi (saiz set data, data pra-isih, dll.) dan keperluan khusus.

Jadual 2 menggambarkan contoh pseudokod dan kerumitan masa untuk beberapa algoritma carian dan isihan:

Jadual 2 Kerumitan Masa Jalanan dan Contoh Pseudokod Searching vs. Sorting in Java: Key Differences and Applications Nota: Tanpa antara muka Comparable Java, kod ini hanya sesuai untuk jenis data primitif. (Sumber: Lysecky, R., & Lizarraga, A. (2022). Pengaturcaraan dalam Java dengan ZyLabs, tatatanda 18.3 O, Rajah 18.3.2.)

Merge Sort, algoritma divide-and-conquer, membahagikan tatasusunan data secara rekursif kepada subbarray yang lebih kecil, mengisihnya dan kemudian menggabungkan subbarray yang diisih (GeeksforGeeks, 2020a). Carian Binari, sebaliknya, berfungsi pada tatasusunan pra-isih, berulang kali mengurangkan separuh selang carian sehingga elemen sasaran ditemui atau dianggap tidak hadir (GeeksforGeeks, 2020b).

Contoh berikut menunjukkan pengisihan ArrayList daripada Book objek mengikut tahun penerbitan menggunakan Isih Gabung, diikuti dengan Carian Binari pada senarai yang diisih:

Book.java

<code class="language-java">/**
 * Book object with title and publication year. Implements Comparable for year-based sorting.
 * 
 * @author Alexander Ricciardi
 * @version 1.0
 * @date 07/14/2024
 */
class Book implements Comparable<Book> {
    String title;
    int year;

    /**
     * Book constructor.
     * @param title Book title.
     * @param year Publication year.
     */
    public Book(String title, int year) {
        this.title = title;
        this.year = year;
    }

    /**
     * Compares books by publication year.
     * @param other Book to compare.
     * @return Comparison result.
     */
    @Override
    public int compareTo(Book other) {
        return Integer.compare(this.year, other.year);
    }

    /**
     * Returns book's string representation.
     * @return String representation.
     */
    @Override
    public String toString() {
        return title + " (" + year + ")";
    }
}</code>

BookSortingSearching.java

<code class="language-java">import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;

/**
 * Sorts and searches a list of books using merge sort and binary search.
 * 
 * @author Alexander Ricciardi
 * @version 1.0
 * @date 07/14/2024
 */
public class BookSortingSearching {

    // ... (mergeSort and binarySearch methods remain the same) ...

    public static void main(String[] args) {
        // ... (main method remains largely the same) ...
    }
}</code>

...(Kaedah mergeSort dan binarySearch akan disertakan di sini, kerana ia berada dalam input asal. Saya telah meninggalkannya untuk ringkas, kerana ia panjang dan sudah ada.)

Output (contoh):

... (Original and sorted lists are displayed here) ...
<p>Enter a year to search for: 1951
Book found: The Catcher in the Rye (1951)</p>

Kerumitan O(n log(n)) Merge Sort menjadikannya cekap untuk set data yang besar, manakala pendekatan sasaran Carian Binari sangat sesuai untuk aplikasi seperti pembelajaran mesin (mis., mencari hiperparameter optimum).

Kesimpulannya, algoritma carian dan pengisihan, walaupun berbeza, adalah saling bergantung. Isih (seperti Isih Gabung) menyediakan data untuk carian yang cekap (seperti Carian Binari), menjadikan kedua-duanya amat diperlukan untuk menyelesaikan masalah yang pelbagai merentas pelbagai domain.


Rujukan:

GeeksforGeeks. (2020a, 18 November). Gabung isihan. GeeksforGeeks. https://www.php.cn/link/d0e7b521c18b09876cb7693e42880dba

GeeksforGeeks. (2020b, 3 Februari). Carian binari. GeeksforGeeks. https://www.php.cn/link/d29af1fd577b037033dd1149e816d521

Lysecky, R., & Lizarraga, A. (2022). Memprogram dalam Java dengan ZyLabs. Zyante, Inc.


Asalnya diterbitkan di Alex.omegapy di Medium by Level UP Coding pada 22 November 2024.

Atas ialah kandungan terperinci Mencari lwn. Isih dalam Java: Perbezaan Utama dan Aplikasi. 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