E N D
Nama : Christoffel Daniel Y. Tambunan NIM : 211401040 Kom : C 1.Analisa Kasus Rata-rata kedua algoritma searching tersebut! Jawaban : A.Linear Search Linear Search melakukan searching secara berurutan dengan cara memeriksa setiap elemen satu per satu (mulai dari elemen paling kiri array) sampai elemen yang dicari ditemukan atau seluruh daftar telah diperiksa. Best case : Best case terjadi ketika elemen yang dicari terletak di posisi pertama daftar. Time complexitynya dalam linear search adalah O(1). Worst case : Worst case terjadi ketika elemen yang dicari tidak ada dalam daftar atau berada di posisi terakhir daftar. Time complexitynya dalam linear search adalah O(n) Average case : Kasus rata-rata dari linear search adalah ketika kita ingin mencari semua kemungkinan yang ada, dimana elemen yang ingin ditemukan bisa ada di indeks ke- 1,2,3,4,5,...... sampai indeks ke-n. Time complexitynya adalah : ?(?) =????? ????? ???? ???????????? ?????? ????? ?(? + 1) =1 + 2 + 3 + ⋯+ ? − 2 + ? − 2 + ? ? 2 ? = ?(?) ?(?) = B.Binary Search Binary Search, di sisi lain, hanya dapat digunakan pada daftar yang diurutkan, tetapi lebih cepat dari Linear Search karena mengurangi jumlah elemen yang harus diperiksa dengan membagi daftar menjadi dua bagian dan hanya memeriksa setengah bagian yang relevan setiap kali. Best case : Best case terjadi ketika elemen yang dicari berada di posisi tengah daftar. Time complexitynya dalam binary search adalah O(1). Worst case : Ketika elemen yang ingin dicari tidak ada dalam daftar/ berada di ujung daftar, maka Binary Search mencapai worst case. Time complexitynya adalah O(log n). Average case: Ketika elemen yang dicari terdistribusi secara acak dalam daftar, Binary Search mencapai average case. Dalam kasus rata-rata, time complexitynya Binary Search adalah O(log n), di mana n adalah jumlah elemen dalam daftar.
2.Dalami lah Analisis Kompleksitas Quick Sort dan Shell Sort! Temukan kasus rata- rata dan terbaiknya! Jawaban : A.Quick Sort Kompleksitas waktu O(n log n) pada kasus rata-rata terjadi karena Quick Sort membagi daftar menjadi dua bagian setiap kali dengan menggunakan pivot. Dalam setiap iterasi, algoritma ini memeriksa setiap elemen dalam daftar dan membagi daftar menjadi dua subdaftar, sehingga memerlukan waktu O(n). Namun, karena algoritma ini membagi daftar menjadi dua subdaftar yang lebih kecil setiap kali, kompleksitas waktu Quick Sort adalah O(log n) untuk setiap level rekursif. Dengan demikian, kompleksitas waktu Quick Sort pada kasus rata-rata adalah O(n log n). Perlu diingat bahwa dalam kasus terburuk, yaitu ketika pivot yang dipilih selalu merupakan elemen terkecil atau terbesar dalam daftar, kompleksitas waktu Quick Sort dapat menjadi O(n^2). Namun, kemungkinan terjadinya kasus terburuk sangat kecil, dan pivot biasanya dipilih secara acak untuk menghindari kemungkinan tersebut. B.Shell Sort Pada kasus rata-rata, kompleksitas waktu Shell Sort dapat dinyatakan sebagai O(n log n) atau O(n^(3/2)), tergantung pada faktor-faktor seperti jarak awal antara elemen dan jenis sequence increment yang digunakan. Secara umum, Shell Sort menggunakan pendekatan divide-and-conquer, di mana daftar dibagi menjadi beberapa subdaftar yang lebih kecil dan kemudian diurutkan secara terpisah. Kemudian, subdaftar tersebut digabungkan kembali untuk membentuk daftar yang terurut. Setiap subdaftar diurutkan dengan menggunakan algoritma insertion sort dengan jarak antara elemen yang berbeda pada setiap iterasi. Karena Shell Sort menggunakan algoritma insertion sort pada setiap subdaftar, kompleksitas waktu Shell Sort pada kasus rata-rata tidak dapat lebih buruk dari O(n^2), tetapi dengan sequence increment yang tepat, kompleksitas waktu Shell Sort dapat menjadi lebih baik daripada O(n^2) dan mendekati O(n log n) atau O(n^(3/2)) pada kasus rata-rata.