Bekerja dengan tatasusunan ialah bahagian asas pengaturcaraan Java dan satu keperluan biasa ialah mencari nilai minimum dan maksimum dalam tatasusunan.
Di sini, kami akan merangkumi enam kaedah berbeza untuk mencari nilai minimum dan maksimum dalam tatasusunan int[] arr = {5, 2, 7, 4, 8, 5, 9, 6}, masing-masing dengan kelebihan unik dan kes penggunaannya.
Pendekatan ini memanfaatkan Java Streams untuk mencari nilai minimum dan maksimum dengan cara yang ringkas dan boleh dibaca.
int[] arr = {5, 2, 7, 4, 8, 5, 9, 6}; int min = Arrays.stream(arr).min().getAsInt(); int max = Arrays.stream(arr).max().getAsInt();
Kelebihan:
Kelemahan:
Kes Penggunaan: Sesuai untuk pembangun yang ingin menggunakan gaya Java moden dan mencari kod yang ringkas dan boleh dibaca.
Pendekatan ini menggunakan Java Collections untuk menukar tatasusunan kepada senarai dan mencari nilai minimum dan maksimum.
int min = Collections.min(Arrays.asList(Arrays.stream(arr).boxed().toArray(Integer[]::new))); int max = Collections.max(Arrays.asList(Arrays.stream(arr).boxed().toArray(Integer[]::new)));
Kelebihan:
Kelemahan:
Kes Penggunaan: Berguna apabila bekerja dalam pangkalan kod berasaskan Koleksi di mana struktur data lain mungkin sudah disenaraikan.
Pendekatan tradisional menggunakan gelung mudah untuk mengulang melalui tatasusunan, membandingkan setiap elemen untuk mencari nilai minimum dan maksimum.
int min = arr[0]; int max = arr[0]; for (int i = 1; i < arr.length; i++) { if (arr[i] < min) { min = arr[i]; } if (arr[i] > max) { max = arr[i]; } }
Kelebihan:
Kelemahan:
Kes Penggunaan: Sesuai untuk mereka yang memerlukan penyelesaian mudah tanpa overhed memori tambahan.
Dalam pendekatan ini, gelung digunakan dalam kombinasi dengan fungsi Math.min() dan Math.max() untuk menentukan nilai minimum dan maksimum.
int min = arr[0]; int max = arr[0]; for (int num : arr) { min = Math.min(min, num); max = Math.max(max, num); }
Kelebihan:
Kelemahan:
Kes Penggunaan: Disyorkan untuk mereka yang mementingkan kebolehbacaan dan sudah biasa dengan kelas Matematik Java.
Gelung yang dioptimumkan ini mengurangkan bilangan perbandingan dengan memproses elemen secara berpasangan. Jika panjang tatasusunan adalah ganjil, gelung dimulakan dengan elemen pertama; jika genap, ia bermula dengan dua yang pertama.
int[] arr = {5, 2, 7, 4, 8, 5, 9, 6}; int min = Arrays.stream(arr).min().getAsInt(); int max = Arrays.stream(arr).max().getAsInt();
Kelebihan:
Kelemahan:
Kes Penggunaan: Sesuai untuk aplikasi kritikal prestasi di mana setiap perbandingan penting.
Pendekatan ini mengisih tatasusunan, kemudian mendapatkan semula minimum (elemen pertama) dan maksimum (elemen terakhir).
int min = Collections.min(Arrays.asList(Arrays.stream(arr).boxed().toArray(Integer[]::new))); int max = Collections.max(Arrays.asList(Arrays.stream(arr).boxed().toArray(Integer[]::new)));
Kelebihan:
Kelemahan:
Kes Penggunaan: Gunakan kaedah ini hanya apabila menyusun tatasusunan boleh diterima dan anda tidak kisah mengubah suai tatasusunan asal.
Method | Time Complexity | Extra Memory Usage |
---|---|---|
Arrays.stream() | O(n) | Additional stream objects |
Collections.min/max | O(n) | Requires boxed integers |
Simple loop | O(n) | Constant |
Math.min/max loop | O(n) | Constant |
Single optimized loop | O(n) | Constant, fewer comparisons |
Arrays.sort() | O(n log n) | In-place (modifies array) |
Memilih kaedah terbaik bergantung kepada pelbagai faktor:
Pilih pendekatan yang paling sesuai dengan keperluan projek anda, gaya pengekodan dan keperluan prestasi. Setiap kaedah mempunyai kekuatan tersendiri, menjadikannya lebih mudah untuk menyesuaikan pendekatan anda untuk hasil yang optimum.
Sebarang pembetulan atau penambahan pada siaran ini dialu-alukan.
int[] arr = {5, 2, 7, 4, 8, 5, 9, 6}; int min = Arrays.stream(arr).min().getAsInt(); int max = Arrays.stream(arr).max().getAsInt();
Atas ialah kandungan terperinci Mencari Nilai Minimum dan Maksimum dalam Tatasusunan: Pendekatan Berkesan dengan Pengaturcaraan Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!