Salah satu algoritma pengurutan yang paling efisien adalah algoritma pengurutan gabungan. Merge sort memiliki dua fase. fase pemisahan dan fase penggabungan. Kami tidak akan mendalami algoritme lanjutan ini di buku ini. Namun, kita dapat menulis kode untuk babak kedua. menggabungkan dua daftar bilangan bulat yang telah diurutkan sebelumnya ke dalam satu daftar yang diurutkan Show Deskripsi Latihan Tulis fungsi Anda dapat menulis fungsi ini dalam satu baris kode dengan menggunakan fungsi kembali diurutkan (daftar1 + daftar2) Tapi ini akan menggagalkan tujuan latihan, jadi jangan gunakan fungsi Pernyataan menegaskan mergeTwoLists([1, 3, 6], [5, 7, 8, 9]) == [1, 3, 5, 6, 7, 8, 9] menegaskan mergeTwoLists([1, 2, 3], [4, 5]) == [1, 2, 3, 4, 5] menegaskan mergeTwoLists([4, 5], [1, 2, 3]) == [1, 2, 3, 4, 5] menegaskan mergeTwoLists([2, 2, 2], [2, 2, 2]) == [2, 2, 2, 2, 2, 2] menegaskan mergeTwoLists([1, 2, 3], []) == [1, 2, 3] menegaskan mergeTwoLists([], [1, 2, 3]) == [1, 2, 3] Cobalah untuk menulis solusi berdasarkan informasi dalam uraian ini. Jika Anda masih kesulitan menyelesaikan latihan ini, bacalah bagian Desain Solusi dan Kasus Khusus serta Gotcha untuk petunjuk tambahan Konsep prasyarat. daftar, Desain Solusi Daftar bilangan bulat, sudah dalam urutan terurut, diteruskan ke fungsi sebagai parameter Di dalam · Lihat angka yang · Tambahkan angka yang lebih kecil ke · Jika nomor · Ulangi hingga Misalnya, Gambar 40-1 menunjukkan tiga iterasi pertama dari loop saat menggabungkan daftar Gambar 40-1. Tiga iterasi pertama dari loop yang menggabungkan dua daftar Pikirkan kode ini seperti ritsleting asimetris. variabel i1 dan Kasus Khusus dan Gotcha Perlu diingat bahwa meskipun parameter Jika salah satu dari argumen daftar ini ke Sekarang coba tulis solusi berdasarkan informasi di bagian sebelumnya. Jika Anda masih kesulitan menyelesaikan latihan ini, bacalah bagian Template Solusi untuk petunjuk tambahan Templat Solusi Cobalah untuk menulis solusi dari awal. Namun jika Anda mengalami kesulitan, Anda dapat menggunakan sebagian program berikut sebagai tempat awal. Salin kode berikut dari https. //invpy. com/mergetwolists-template. py dan rekatkan ke editor kode Anda. Ganti garis bawah dengan kode untuk membuat program yang berfungsi def menggabungkanDuaDaftar(daftar1, daftar2) hasil = ____ i1 = ____ i2 = ____ sementara i1 < len(____) dan ____ < len(list2) jika daftar1[____] < daftar2[____] hasil. tambahkan(____[i1]) i1 += ____ kalau tidak hasil. tambahkan(____[i2]) i2 += ____ jika i1 < len(____) untuk j dalam rentang(i1, len(list1)) hasil. tambahkan(____[j]) jika i2 < len(____) untuk j dalam rentang(i2, len(list2)) hasil. tambahkan(____[j]) hasil pengembalian Solusi lengkap untuk latihan ini diberikan dalam Lampiran A dan https. //invpy. com/mergetwolists. py. Anda dapat melihat setiap langkah dari program ini saat berjalan di bawah debugger di https. //invpy. com/mergetwolists-debug/ Bacaan lebih lanjut Merge sort menggunakan perilaku "menggabungkan dua daftar yang diurutkan menjadi satu daftar yang diurutkan" ini sebagai langkah dalam algoritmenya. Anda dapat mempelajari lebih lanjut tentang pengurutan gabungan dan algoritme rekursif lainnya dari buku saya, “The Recursive Book of Recursion. ” Buku lengkap tersedia secara gratis di bawah lisensi Creative Commons di https. // ciptakan dengan python. com/rekursi/ Bagaimana cara menggabungkan dua daftar yang tidak disortir?Di bawah ini adalah langkah-langkahnya. . Gabungkan kedua daftar dengan melintasi daftar pertama sampai kita mencapai simpul ekor dan kemudian arahkan simpul ekor berikutnya ke simpul kepala dari daftar kedua. Simpan daftar gabungan ini di daftar pertama Urutkan daftar tertaut yang digabungkan di atas. Di sini, kita akan menggunakan bubble sort Apa 3 cara berbeda untuk menggabungkan 2 daftar dengan Python?Berikut ini adalah 6 cara menggabungkan daftar dengan Python. . gabungan (+) operator Metode Naif Daftar Pemahaman memperpanjang() metode operator '*' itertools. rantai() metode Apa cara yang benar untuk menggabungkan dua daftar dengan Python?Satu cara sederhana dan populer untuk menggabungkan(menggabungkan) dua daftar dengan Python adalah menggunakan metode append() built-in dari python . Metode append() di python menambahkan satu item ke daftar yang ada. Itu tidak mengembalikan daftar item baru. Sebaliknya, itu memodifikasi daftar asli dengan menambahkan item ke akhir daftar.
Bagaimana Anda menggabungkan array yang tidak disortir?Tulis fungsi SortedMerge() yang mengambil dua daftar, yang masing-masing tidak disortir, dan menggabungkan keduanya menjadi satu daftar baru yang dalam urutan terurut (meningkat) . SortedMerge() harus mengembalikan daftar baru. |