Untuk set elemen tertentu, tentukan susunan mana yang akan membawa kepada kes terburuk jenis gabungan?
Kami tahu bahawa secara asimptotik, isihan cantum sentiasa mengambil masa O(n log n), tetapi dalam amalan, kes yang memerlukan lebih banyak perbandingan biasanya mengambil lebih banyak masa. Sekarang kita pada asasnya perlu menentukan susunan elemen input yang memaksimumkan bilangan perbandingan apabila melaksanakan algoritma isihan gabungan biasa. . 23 13 21 17 25 12 20 16 24 14 22 18 26
KaedahKami mengkaji cara membina set input kes terburuk untuk isihan gabungan?
Sekarang kita cuba membina tatasusunan dengan cara bawah ke atas
Sekarang biarkan tatasusunan yang diisih ialah {11, 12, 13, 14, 15, 16, 17, 18}.
Algoritma Penuh
GenerateWorstCase(arr[])Kami memanggil GenerateWorstCase - GenerateWorstCase (kiri) pada sub-array kiri
Kami memanggil GenerateWorstCase pada sub-array kanan - GenerateWorstCase (kanan)
kita1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
|
1 2 3 4 |
|
Atas ialah kandungan terperinci Cari pilih atur yang membawa kepada senario kes terburuk jenis gabungan dalam C. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!