Terus ke kandungan
IGCSE·Tuition
Sains Komputer · Pelajaran

Cari nilai maksimum dalam senarai yang diberi

Mencari nombor terbesar mudah dilakukan dengan mata, tetapi mudah tersilap apabila anda perlu menulis langkahnya.

Dalam halaman ini
  1. Apakah langkahnya?
  2. Contoh penyelesaian
  3. Kesilapan yang perlu diawasi
  4. Semak sendiri
  5. Seterusnya

Untuk mencari maksimum sesuatu senarai, simpan satu pemboleh ubah yang memegang nilai terbesar yang dilihat setakat ini dan bandingkan setiap item lain dengannya. Setiap kali satu item lebih besar, ia menggantikan nilai yang disimpan.

Pelajaran ini menggunakan gelung daripada menjejak gelung terkawal bilangan pada tatasusunan. Ia berada dalam pengulangan dan tatasusunan, dan corak yang sama menghasilkan minimum, kiraan dan jumlah.

Apakah langkahnya?

  1. Tetapkan Max kepada item pertama dalam senarai.
  2. Gelung melalui item yang tinggal, dari kedudukan 2 hingga kedudukan terakhir.
  3. Jika item semasa lebih besar daripada Max, salin ke dalam Max.
  4. Selepas gelung, Max memegang nilai terbesar.

Contoh penyelesaian

Tatasusunan Scores[1:6] menyimpan 35, 48, 22, 48, 51, 40.

Max ← Scores[1]
FOR i ← 2 TO 6
   IF Scores[i] > Max
      THEN
         Max ← Scores[i]
   ENDIF
NEXT i
OUTPUT Max

Max bermula sebagai 35.

iScores[i]Scores[i] > Max?Max selepas
24848 > 35 benar48
32222 > 48 palsu48
44848 > 48 palsu48
55151 > 48 benar51
64040 > 51 palsu51

Outputnya ialah 51. Kedudukan 4 menyimpan nilai yang sama, 48, dan tidak menggantikan Max kerana 48 > 48 palsu.

Untuk turut melaporkan di mana maksimum itu, simpan kedudukan juga:

Max ← Scores[1]
MaxPos ← 1
FOR i ← 2 TO 6
   IF Scores[i] > Max
      THEN
         Max ← Scores[i]
         MaxPos ← i
   ENDIF
NEXT i
OUTPUT MaxPos, Max

Bagi data yang sama, MaxPos berubah pada i = 2 dan i = 5. Outputnya ialah 5, 51.

Kesilapan yang perlu diawasi

Kesilapan biasa ialah memulakan dengan Max ← 0.

Algoritma yang salah: Max ← 0, kemudian bandingkan setiap item termasuk yang pertama.

Dengan suhu -5, -2 dan -9, tiada nilai lebih besar daripada 0, jadi algoritma mengeluarkan 0. Nilai itu tiada dalam senarai.

Pembetulannya ialah Max ← Temps[1], kemudian gelung dari kedudukan 2. Jejaknya: Max ialah -5, kemudian -2 > -5 benar jadi Max menjadi -2, kemudian -9 > -2 palsu. Outputnya -2, yang betul.

Semak sendiri

1. Jejak algoritma pada data 8, 3, 12, 12, 5. Apakah Max selepas setiap item?

Lihat jawapan

Mulakan dengan 8. Kemudian 3 > 8 palsu (8), 12 > 8 benar (12), 12 > 12 palsu (12), 5 > 12 palsu (12). Nilai akhir ialah 12.

2. Simbol tunggal yang manakah berubah untuk mencari minimum bagi data yang sama, dan apakah keputusannya?

Lihat jawapan

Tukar > kepada <. Mulakan dengan 8, kemudian 3 < 8 benar (3), kemudian 12, 12 dan 5 tidak kurang daripada 3. Minimumnya 3.

3. Bagi data 6, 9, 9, 2 dalam Data[1:4], apakah kedudukan yang diberi versi kedudukan, dan apa yang berubah dengan >=?

Lihat jawapan

Dengan >, 9 pada kedudukan 2 disimpan dahulu, dan 9 yang kedua tidak menggantikannya, jadi kedudukannya 2. Dengan >=, 9 yang kedua menggantikannya, jadi kedudukannya 3. Nilainya 9 dalam kedua-dua kes.

Seterusnya

Seterusnya, perhatikan dengan teliti apa maksud pemboleh ubah gelung i berbanding item yang ditunjuknya dalam menggunakan indeks tatasusunan tanpa mengelirukannya dengan nilai. Untuk mencuba senarai anda sendiri, gunakan kotak pasir penaakulan Python dan bandingkan keputusannya dengan jadual jejak anda.

Seorang guru dalam tuisyen Computer Science dalam talian secara satu dengan satu boleh memberi senarai yang janggal, seperti nilai negatif atau nilai berulang, supaya anda belajar meramal di mana algoritma gagal.

Soalan lazim

Mengapa Max dimulakan dengan item pertama dan bukan 0?

Bermula pada 0 hanya berfungsi jika setiap nilai melebihi 0. Jika semua nilai negatif, 0 tidak pernah dikalahkan dan algoritma mengeluarkan nilai yang tiada dalam senarai. Bermula dengan item pertama sentiasa memberi nilai sebenar daripada senarai sebagai perbandingan.

Apa yang berubah jika saya mahukan nilai terkecil?

Tukar perbandingan daripada > kepada < dan namakan pemboleh ubah Min. Selebihnya sama: mulakan dengan item pertama dan bandingkan setiap item yang tinggal dengannya.

Apa yang berlaku apabila nilai terbesar muncul dua kali?

Dengan > nilai terbesar yang pertama kekal, kerana nilai yang sama tidak menggantikannya. Dengan >= yang terakhir menang. Nilai maksimum sama sahaja, tetapi kedudukan yang disimpan akan berbeza.

Dikemas kini:

Langkah seterusnya

Jika anda boleh mencari maksimum dengan mata tetapi algoritma anda gagal pada data yang janggal, seorang guru boleh memberi senarai baharu bersama anda sehingga anda boleh meramal di mana ia gagal.

Kelas percubaan berbayar satu jam pada kadar guru yang disahkan, bermula RM80. Yuran lain, jadual dan susunan seterusnya disahkan terus bersama guru selepas kelas percubaan.

Tuisyen diatur bersama ibu bapa atau penjaga. Hantar halaman ini kepada mereka melalui WhatsApp supaya mereka boleh bertanya bagi pihak anda.

Ibu bapa atau penjaga? Tanya di sini

9,000+ pelajar telah dibantu melalui perkhidmatan kami