Rumah  >  Artikel  >  Java  >  Struktur dan Algoritma Data Java: Panduan Pemula

Struktur dan Algoritma Data Java: Panduan Pemula

WBOY
WBOYasal
2024-05-09 08:57:02366semak imbas

Struktur data dan algoritma dalam Java menyediakan sokongan asas untuk program yang cekap dan berskala: 1. Struktur data yang biasa digunakan termasuk tatasusunan, senarai terpaut, tindanan, baris gilir, pepohon dan graf 2. Algoritma ialah urutan langkah yang teratur untuk menyelesaikan masalah tertentu , termasuk menyusun, mencari, pengaturcaraan dinamik, menjejak ke belakang dan algoritma tamak 3. Struktur dan algoritma data boleh digunakan untuk menyelesaikan masalah dalam pertempuran sebenar, seperti mencari subarray jumlah yang ditentukan melalui jadual cincang dan pengiraan jumlah awalan, dan proses khusus ialah tercermin dalam kod.

Struktur dan Algoritma Data Java: Panduan Pemula

Struktur dan Algoritma Data Java: Panduan Pemula

Struktur dan algoritma data adalah asas kepada bidang sains komputer dan penting untuk menulis program yang cekap dan berskala. Java, sebagai bahasa, menyediakan pelbagai struktur data yang membantu pengaturcara menyimpan dan menyusun data dengan cekap. Algoritma ialah kaedah memproses dan memanipulasi data ini untuk menyelesaikan masalah tertentu. .

Senarai terpaut: Menyimpan koleksi elemen, di mana setiap elemen menghala ke elemen seterusnya.

Timbunan:
    Struktur data yang mengikut prinsip masuk-dahulu-keluar (LIFO).
  • Baris gilir:
  • Struktur data yang mengikut prinsip masuk dahulu, keluar dahulu (FIFO).
  • Pokok:
  • Struktur hierarki di mana setiap nod boleh mempunyai berbilang nod anak.
  • Graf:
  • Koleksi nod dan tepi yang disambungkan, digunakan untuk mewakili perhubungan yang kompleks.
  • Algoritma
  • Algoritma ialah urutan langkah berkaedah yang direka untuk menyelesaikan masalah tertentu. Algoritma biasa dalam Java termasuk:
  • Algoritma pengisihan:
  • Isih elemen dalam tertib menaik atau menurun.

Algoritma carian: Cari elemen dalam struktur data.

Algoritma pengaturcaraan dinamik:
    Uraikan masalah besar kepada masalah yang lebih kecil dan kemudian selesaikan satu persatu.
  • Algoritma penjejakan belakang:
  • Terokai semua kemungkinan secara sistematik untuk mencari penyelesaian terbaik.
  • Algoritma Tamak:
  • Buat pilihan optimum setempat pada setiap langkah.
  • Kes Praktikal
  • Mari kita lihat contoh untuk melihat cara menggunakan struktur data dan algoritma untuk menyelesaikan masalah sebenar dalam Java:
  • Masalah: Memandangkan tatasusunan integer, ketahui sama ada terdapat subarray yang dan merupakan nilai sasaran.

Penyelesaian:

import java.util.HashMap;

public class SubarraySum {

    public static boolean subarraySum(int[] nums, int target) {
        // 哈希表存储前缀和和出现次数
        HashMap<Integer, Integer> map = new HashMap<>();
        map.put(0, 1);

        int sum = 0;
        // 遍历数组
        for (int num : nums) {
            // 更新前缀和
            sum += num;
            // 检查是否有前缀和为 (sum - target)
            if (map.containsKey(sum - target)) {
                return true;
            }
            // 将前缀和添加到哈希表中
            map.put(sum, map.getOrDefault(sum, 0) + 1);
        }

        return false;
    }

    public static void main(String[] args) {
        int[] nums = {1, 4, 20, 3, 10, 5};
        int target = 33;

        boolean result = subarraySum(nums, target);
        System.out.println("是否存在符合要求的子数组:" + result);
    }
}

Prosedur:

Gunakan jadual cincang untuk menyimpan pemetaan awalan dan kejadian.

Lintas tatasusunan dan kemas kini jumlah awalan semasa. Setiap kali jumlah awalan dikemas kini, semak sama ada terdapat jumlah awalan (jumlah - sasaran) dan jika ya, cari subbaris yang sepadan.

Tambah jumlah awalan yang dikemas kini pada jadual cincang. Selepas merentasi tatasusunan, jika jadual cincang tidak mengandungi sebarang padanan jumlah awalan (jumlah - sasaran), maka tiada subarray yang sepadan.

    Atas ialah kandungan terperinci Struktur dan Algoritma Data Java: Panduan Pemula. 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