Mengimplementasikan Algoritma Array 2D
| English | Bahasa Indonesia |
|---|---|
| nested-loop/ˈnestɪd luːp/ | perulangan bersarang |
| main diagonal/meɪn daɪˈæɡənl/ | diagonal utama |
| indexed/ˈɪndekst/ | terindeks |
Algoritma Grid
- Algoritma 2-D menggabungkan pola array dengan penelusuran loop bersarang.
- Jumlah / hitung / max di seluruh grid: akumulasikan di dalam loop dalam.
- Cari grid: kembalikan
[row][col]saat ditemukan (atau sinyal "tidak ditemukan"). - Logika akumulator/max yang sama, kini atas
rows × columnssel.
Jumlah baris dan kolom
- Satu baris: tetapkan
r, loopcatas kolom, menjumlahkang[r][c]. - Satu kolom: tetapkan
c, loopratas baris, menjumlahkang[r][c]. - Memilih indeks mana yang ditetapkan dan mana yang diloop adalah keputusan kunci.
- Jumlah baris menyapu melintang; jumlah kolom menyapu ke bawah.
Diagonal
- Diagonal utama dari grid persegi adalah sel-sel di mana baris == kolom.
- Loop satu indeks:
for (int i = 0; i < g.length; i++) { ... g[i][i] ... } g[0][0], g[1][1], g[2][2], …— satu loop, kedua indeks sama.- Berguna untuk grid persegi (pemeriksaan identitas, diagonal papan).
Memodifikasi sel
- Untuk mengubah sel, gunakan loop bersarang berindeks dan tentukan
g[r][c] = .... - Versi for-each tidak dapat menulis kembali ke grid.
- Perhatikan dua batas — panjang yang salah membaca atau menulis sel yang salah.
- Telusuri
[r][c]dengan hati-hati, terutama ketika baris dan kolom berbeda jumlahnya.
Tentukan indeks mana yang ditetapkan dan mana yang diloop — itu perbedaan antara jumlah baris dan jumlah kolom. Jumlah baris menetapkan r dan meloop c (g[r][c] melintang); jumlah kolom menetapkan c dan meloop r (g[r][c] ke bawah). Dan memodifikasi sel memerlukan loop bersarang berindeks (g[r][c] = …); bentuk for-each hanya bisa membaca.
Menjumlahkan kolom 0 dari sebuah grid:
int sum = 0;for (int r = 0; r < g.length; r++) { sum += g[r][0]; }- Menetapkan kolom
0, meloop ke bawah sepanjang baris — sebuah jumlah kolom.
Algoritma 2-D menerapkan pola array atas loop bersarang: jumlah/hitung/max/cari seluruh-grid, jumlah baris (tetapkan r, loop c), jumlah kolom (tetapkan c, loop r), atau diagonal (g[i][i]). Memodifikasi sel memerlukan loop berindeks (g[r][c] = …); perhatikan kedua batas (g.length baris, g[0].length kolom).
Menjumlahkan kolom 0
g[0][0]=1, g[1][0]=4, g[2][0]=7: running sum 1, 5, 12.
Untuk menjumlahkan SATU baris r, Anda...
Jumlah baris menetapkan baris, meloop kolom.
Untuk menjumlahkan SATU kolom c, Anda...
Jumlah kolom menetapkan kolom, meloop baris.
Diagonal utama dari grid persegi adalah sel-sel di mana...
g[0][0], g[1][1], g[2][2] — satu indeks, keduanya sama.
Bentuk for-each dapat memodifikasi (menulis ke) sel-sel grid.
For-each hanya baca; gunakan perulangan terindeks (g[r][c] = ...) untuk menulis.
Kolom 0 dari {{1,2},{4,5},{7,8}} adalah 1, 4, 7. Berapakah jumlah totalnya?
1 + 4 + 7 = 12.
Urutkan langkah-langkah untuk menjumlahkan kolom c.
Inisialisasi, loop baris, akumulasikan, kembalikan.