cari
Rumahpembangunan bahagian belakangTutorial PythonMemahami Isih Sisipan: Pendekatan Didorong Soalan

Understanding Insertion Sort: A Question-Driven Approach

Dalam catatan blog ini, kami akan mengambil pendekatan terdorong soalan untuk memahami asas algoritma isihan sisipan. Saya menghasilkan pendekatan ini apabila saya cuba mencari cara yang lebih baik untuk memahami algoritma sisipan dan lain-lain yang akan saya pelajari tidak lama lagi. Saya ingin membina strategi yang boleh saya gunakan pada kebanyakan, jika tidak semua, algoritma yang akan saya pelajari. Semasa saya memikirkan perkara ini, saya pasti bahawa saya mungkin perlu menggunakan pemikiran prinsip pertama

Diinspirasikan oleh pemikiran prinsip pertama, pendekatan ini melibatkan percubaan pertama untuk memahami algoritma, sama ada pemahaman awal kita kabur atau jelas. Kami kemudiannya mengenal pasti konsep atau mekanik kecil yang terlibat yang membentuk algoritma. Dengan membentuk soalan mengenai mekanik atau konsep kecil ini. Kami pada asasnya cuba memahami cara kerja algoritma dari perspektif kecil yang berbeza dengan tumpuan untuk cuba menyelesaikan soalan yang kami bentuk sendiri.

Jawapan yang anda bentuk mungkin atau mungkin tidak pada mulanya menyerupai sintaks yang digunakan dalam algoritma sebenar. Matlamatnya adalah untuk menjawab soalan anda sendiri, tidak kira sama ada sintaksnya hampir atau tidak. Sebaik sahaja anda mempunyai pemahaman yang jelas, anda kemudian boleh menukar, menggabungkan jawapan anda untuk menggunakan sintaks, serupa dengan pelaksanaan sebenar algoritma. Saya percaya proses ini membolehkan anda meneroka bentuk kod alternatif, memahami sebab sintaks tertentu digunakan, menangani kes tepi dengan cara yang lebih baik sendiri.

Saya percaya kaedah ini memastikan kami memahami teori dan alasan di sebalik setiap baris kod, menjadikan proses pelaksanaan lebih intuitif dan bermakna. Soalan berikut dan proses pemikiran yang saya lalui membantu saya memahami Isih Sisipan dengan lebih baik dan membolehkan saya mengodkannya dengan berkesan.

Bagi anda, soalan mungkin berbeza; mereka mungkin lebih banyak, lebih sedikit atau berbeza sama sekali. Mungkin ada yang mengatakan ini serupa dengan kejuruteraan terbalik, walau apa pun yang anda panggil, kaedah ini membolehkan saya mendapat pemahaman yang menyeluruh tentang algoritma Isih Sisipan. Saya harap ia melakukan perkara yang sama untuk anda untuk mana-mana algoritma lain. Soo, mari selami!

Pelaksanaan Isih Sisipan

Ini ialah bentuk kod yang akhirnya akan kami laksanakan untuk Isih Sisipan.

def insertion_sort(values):

    for new_value_index in range(1,len(values)):

        new_value = values[new_value_index]

        index = new_value_index-1
        while index>=0:
            if values[index]<break values index-="1" new_value>



<p>Soalan</p>

<p>Diberi senarai diisih, menggunakan gelung sambil, cetak nilai dari kanan ke kiri.<br>
</p>

<pre class="brush:php;toolbar:false">values = [4,8,12,16,20,24,30]
# given a sorted list, using while loop, print values from right to left.

index = len(values)-1
while index>=0:
    print(values[index],end = " ")
    index-=1

Memandangkan senarai diisih dan nilai baharu, cari indeks di mana nilai baharu itu akan dimasukkan untuk memastikan senarai diisih.

values = [4, 8, 12, 16, 20, 24]
new_value = 14

# using while loop, if traversing from right to left

index = len(values)-1
while index>=0:
    if values[index]<new_value: break index-="1" print>



<p>Memandangkan senarai diisih dan nilai baharu, masukkan nilai baharu pada senarai supaya ia kekal diisih.<br>
</p>

<pre class="brush:php;toolbar:false">values = [4, 8, 12, 16, 20, 24]
new_value = 14

# if traversal from right to left

index = len(values)-1
while index>=0:
    if values[index]<break index-="1" values="values[:index+1]" print>



<p>Diberi senarai diisih, kemudian ditambah dengan nilai baharu, alihkan nilai baharu ke kedudukan indeks yang diberikan.<br>
</p>

<pre class="brush:php;toolbar:false">values = [4, 8, 12, 16, 20, 24, 30]

new_value = 14

values.append(new_value)

given_index = 3

# above given

n = len(values)-1

index = n-1
while index>given_index:
    values[index+1] = values[index]
    index-=1

print(values)

values[given_index+1] = new_value

print(values)

Diberi senarai diisih, kemudian ditambah dengan nilai baharu, isih senarai.

values = [4, 8, 12, 16, 20, 24, 30]

new_value = 14

values.append(new_value)

print(values)

### given a sorted list, then appended with new value, sort the list
####

n = len(values)-1
new_value = values[-1]

# find the index at which the value is to be inserted
# right to left
index = n-1
while index>=0:
    if values[index]<break index-="1" given_index="index" print : move the values forward by one step until we reach given index while>given_index:
    values[index+1] = values[index]
    index-=1

values[index+1] = new_value

print(values)
</break>

Diberikan senarai diisih, kemudian ditambah dengan nilai baharu, susun senarai.

values = [4, 8, 12, 16, 20, 24, 30]

new_values = [14,32]

values += new_values

print(values)

# given a sorted list, then appended with two new value(s), sort the list

n = len(values)-1

new_value_start_index = n - 1

print(new_value_start_index, values[new_value_start_index])

for new_value_index in range(new_value_start_index,len(values)):

    new_value = values[new_value_index]

    index = new_value_index-1
    while index>=0:
        if values[index]<new_value: break values index-="1" new_value print>



<p>Senarai diberi, susunlah.<br>
</p>

<pre class="brush:php;toolbar:false">import random

values = random.sample(range(10,90), k = 10)

values
print(values)

for new_value_index in range(1,len(values)):
    new_value = values[new_value_index]

    index = new_value_index-1
    while index>=0:
        if values[index]<break values index-="1" new_value print>



<p>Pelaksanaan Isih Sisipan<br>
</p>

<pre class="brush:php;toolbar:false">def insertion_sort(values):
    for new_value_index in range(1,len(values)):
        new_value = values[new_value_index]

        index = new_value_index-1
        while index>=0:
            if values[index]<break values index-="1" new_value>



<p>Sumber Tambahan</p>

<p>Walaupun saya pada mulanya bekerja melalui set soalan yang komprehensif untuk memahami algoritma dengan lebih baik, soalan di atas adalah satu set soalan yang saya fikir penting untuk memahami Isih Sisipan dengan cara yang lebih baik. Termasuk semua soalan yang saya kerjakan akan menjadikan siaran itu agak panjang.</p>

<p>Bagi mereka yang berminat untuk melihat semua soalan, saya telah mencipta Buku Nota Jupyter yang mengandungi set penuh soalan dengan jawapan saya sendiri, yang membolehkan saya memahami pelaksanaan Isih Sisipan sepenuhnya.</p>

<p>Saya menggalakkan anda menyemak buku nota jika anda ingin menyelidiki lebih lanjut.</p>

<p>Pembetulan dan cadangan dialu-alukan.</p>


          

            
        </break>

Atas ialah kandungan terperinci Memahami Isih Sisipan: Pendekatan Didorong Soalan. 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
Rancangan Python 2 jam: Pendekatan yang realistikRancangan Python 2 jam: Pendekatan yang realistikApr 11, 2025 am 12:04 AM

Anda boleh mempelajari konsep pengaturcaraan asas dan kemahiran Python dalam masa 2 jam. 1. Belajar Pembolehubah dan Jenis Data, 2.

Python: meneroka aplikasi utamanyaPython: meneroka aplikasi utamanyaApr 10, 2025 am 09:41 AM

Python digunakan secara meluas dalam bidang pembangunan web, sains data, pembelajaran mesin, automasi dan skrip. 1) Dalam pembangunan web, kerangka Django dan Flask memudahkan proses pembangunan. 2) Dalam bidang sains data dan pembelajaran mesin, numpy, panda, scikit-learn dan perpustakaan tensorflow memberikan sokongan yang kuat. 3) Dari segi automasi dan skrip, Python sesuai untuk tugas -tugas seperti ujian automatik dan pengurusan sistem.

Berapa banyak python yang boleh anda pelajari dalam 2 jam?Berapa banyak python yang boleh anda pelajari dalam 2 jam?Apr 09, 2025 pm 04:33 PM

Anda boleh mempelajari asas -asas Python dalam masa dua jam. 1. Belajar pembolehubah dan jenis data, 2. Struktur kawalan induk seperti jika pernyataan dan gelung, 3 memahami definisi dan penggunaan fungsi. Ini akan membantu anda mula menulis program python mudah.

Bagaimana Mengajar Asas Pengaturcaraan Pemula Komputer Dalam Kaedah Projek dan Masalah Dikemukakan Dalam masa 10 Jam?Bagaimana Mengajar Asas Pengaturcaraan Pemula Komputer Dalam Kaedah Projek dan Masalah Dikemukakan Dalam masa 10 Jam?Apr 02, 2025 am 07:18 AM

Bagaimana Mengajar Asas Pengaturcaraan Pemula Komputer Dalam masa 10 jam? Sekiranya anda hanya mempunyai 10 jam untuk mengajar pemula komputer beberapa pengetahuan pengaturcaraan, apa yang akan anda pilih untuk mengajar ...

Bagaimana untuk mengelakkan dikesan oleh penyemak imbas apabila menggunakan fiddler di mana-mana untuk membaca lelaki-dalam-tengah?Bagaimana untuk mengelakkan dikesan oleh penyemak imbas apabila menggunakan fiddler di mana-mana untuk membaca lelaki-dalam-tengah?Apr 02, 2025 am 07:15 AM

Cara mengelakkan dikesan semasa menggunakan fiddlerevery di mana untuk bacaan lelaki-dalam-pertengahan apabila anda menggunakan fiddlerevery di mana ...

Apa yang perlu saya lakukan jika modul '__builtin__' tidak dijumpai apabila memuatkan fail acar di Python 3.6?Apa yang perlu saya lakukan jika modul '__builtin__' tidak dijumpai apabila memuatkan fail acar di Python 3.6?Apr 02, 2025 am 07:12 AM

Memuatkan Fail Pickle di Python 3.6 Kesalahan Laporan Alam Sekitar: ModulenotFoundError: Nomodulenamed ...

Bagaimana untuk meningkatkan ketepatan segmentasi kata Jieba dalam analisis komen tempat yang indah?Bagaimana untuk meningkatkan ketepatan segmentasi kata Jieba dalam analisis komen tempat yang indah?Apr 02, 2025 am 07:09 AM

Bagaimana untuk menyelesaikan masalah segmentasi kata Jieba dalam analisis komen tempat yang indah? Semasa kami mengadakan komen dan analisis tempat yang indah, kami sering menggunakan alat segmentasi perkataan jieba untuk memproses teks ...

Bagaimana cara menggunakan ungkapan biasa untuk memadankan tag tertutup pertama dan berhenti?Bagaimana cara menggunakan ungkapan biasa untuk memadankan tag tertutup pertama dan berhenti?Apr 02, 2025 am 07:06 AM

Bagaimana cara menggunakan ungkapan biasa untuk memadankan tag tertutup pertama dan berhenti? Semasa berurusan dengan HTML atau bahasa markup lain, ungkapan biasa sering diperlukan untuk ...

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌

Alat panas

Versi Mac WebStorm

Versi Mac WebStorm

Alat pembangunan JavaScript yang berguna

MantisBT

MantisBT

Mantis ialah alat pengesan kecacatan berasaskan web yang mudah digunakan yang direka untuk membantu dalam pengesanan kecacatan produk. Ia memerlukan PHP, MySQL dan pelayan web. Lihat perkhidmatan demo dan pengehosan kami.

SecLists

SecLists

SecLists ialah rakan penguji keselamatan muktamad. Ia ialah koleksi pelbagai jenis senarai yang kerap digunakan semasa penilaian keselamatan, semuanya di satu tempat. SecLists membantu menjadikan ujian keselamatan lebih cekap dan produktif dengan menyediakan semua senarai yang mungkin diperlukan oleh penguji keselamatan dengan mudah. Jenis senarai termasuk nama pengguna, kata laluan, URL, muatan kabur, corak data sensitif, cangkerang web dan banyak lagi. Penguji hanya boleh menarik repositori ini ke mesin ujian baharu dan dia akan mempunyai akses kepada setiap jenis senarai yang dia perlukan.

VSCode Windows 64-bit Muat Turun

VSCode Windows 64-bit Muat Turun

Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft

Muat turun versi mac editor Atom

Muat turun versi mac editor Atom

Editor sumber terbuka yang paling popular