wayground logo

Free Printable Worksheets

NEW

Font size

S
M
L
XL
Worksheets

Soal UAS Ganjil Algoritma & Pemrograman

Total questions: 80

Worksheet time: 13mins

Name
Class
Date
1.
Manakah algoritma pengurutan yang paling cocok digunakan untuk mengurutkan daftar data yang terdiri dari jutaan angka secara efisien?
a)
Bubble sort
b)
Insertion sort
c)
Selection sort
d)
Merge sort
e)
Quick sort
2.
Berapakah jumlah maksimum langkah yang dibutuhkan oleh algoritma bubble sort untuk mengurutkan sebuah daftar angka terdiri dari N elemen?
a)
N
b)
N - 1
c)
N^2
d)
(N^2)/2
e)
N!
3.
Manakah algoritma pengurutan yang memiliki kompleksitas waktu terbaik dalam kasus rata-rata?
a)
Bubble sort
b)
Insertion sort
c)
Selection sort
d)
Merge sort
e)
Quick sort
4.
Pada algoritma quick sort, elemen mana yang dipilih sebagai pivot?
a)
Elemen pertama dalam daftar
b)
Elemen terakhir dalam daftar
c)
Elemen di tengah daftar
d)
Elemen acak dalam daftar
e)
Semua elemen dalam daftar dipilih sebagai pivot
5.
Algoritma pengurutan counting sort efisien digunakan untuk mengurutkan daftar angka dengan rentang nilai terbatas. Namun, algoritma ini tidak efektif jika rentang nilai sangat besar.
a)
Benar
b)
Salah
6.
Berikut ini adalah fungsi rekursif untuk menghitung pangkat suatu bilangan: def pangkat(x, n): if n == 0: return 1 else: return x * pangkat(x, n-1) Manakah hasil dari pangkat(2, 3)?
a)
2
b)
4
c)
6
d)
8
7.
Berikut ini adalah fungsi rekursif untuk mencari nilai faktorial dari suatu bilangan: def faktorial(n): if n == 0 or n == 1: return 1 else: return n * faktorial(n-1) Manakah hasil dari faktorial(5)?
a)
5
b)
10
c)
15
d)
120
8.
Berikut ini adalah fungsi rekursif untuk mencari jumlah bilangan dari 1 hingga n: def jumlah_bilangan(n): if n == 1: return 1 else: return n + jumlah_bilangan(n-1) Berapakah hasil dari jumlah_bilangan(4)?
a)
6
b)
8
c)
10
d)
15
9.
Berikut ini adalah fungsi rekursif untuk mencari elemen maksimum dari suatu array: def maksimum_array(arr): if len(arr) == 1: return arr[0] else: return max(arr[0], maksimum_array(arr[1:])) Manakah hasil dari maksimum_array([8, 4, 12, 6, 10])?
a)
4
b)
6
c)
8
d)
12
10.
Berikut ini adalah fungsi rekursif untuk mencari deret Fibonacci hingga suatu nilai n: def fibonacci(n): if n <= 0: return [] elif n == 1: return [0] elif n == 2: return [0, 1] else: fib = fibonacci(n - 1) fib.append(fib[-1] + fib[-2]) return fib Berapakah hasil dari fibonacci(7)?
a)
[0, 1, 1, 2, 3, 5, 8]
b)
[0, 1, 1, 2, 3, 5, 8, 13]
c)
[1, 2, 3, 5, 8, 13, 21]
d)
[0, 1, 1, 2, 3, 5, 8, 15]
11.
Manakah algoritma pengurutan berikut yang memiliki kompleksitas waktu terbaik O(n log n)?
a)
Bubble Sort
b)
Insertion Sort
c)
Merge Sort
d)
Selection Sort
12.
Pencarian elemen pada array terurut dapat paling efisien dilakukan menggunakan algoritma berikut, kecuali:
a)
Linear Search
b)
Binary Search
c)
Hashing
d)
Interpolation Search
13.
Manakah pernyataan berikut yang benar tentang algoritma pengurutan Quick Sort?
a)
Quick Sort menggunakan pendekatan divide and conquer.
b)
Quick Sort memiliki kompleksitas waktu terbaik O(n log n) pada kasus terburuk.
c)
Quick Sort cocok untuk mengurutkan data yang berukuran besar.
d)
Quick Sort memiliki kompleksitas waktu terburuk O(n^2) pada kasus terbaik.
14.
Algoritma pengurutan mana yang paling efisien untuk mengurutkan array dengan jumlah elemen yang sangat besar?
a)
Bubble Sort
b)
Insertion Sort
c)
Merge Sort
d)
Selection Sort
15.
Manakah dari algoritma pencarian berikut yang memerlukan data terurut sebelum melakukan pencarian?
a)
Linear Search
b)
Binary Search
c)
Hashing
d)
Interpolation Search
16.
Manakah teknik pemecahan masalah yang cocok digunakan untuk mengurutkan daftar bilangan secara ascending (menaik) dengan efisien?
a)
Linear Search
b)
Bubble Sort
c)
Binary Search
d)
Merge Sort
17.
Pada kasus tertentu, ketika data memiliki ukuran yang besar dan sudah diurutkan sebelumnya, algoritma pencarian apa yang cocok digunakan untuk mencari elemen dengan efisien?
a)
Linear Search
b)
Binary Search
c)
Bubble Sort
d)
Merge Sort
18.
Manakah teknik pemecahan masalah yang paling tepat digunakan untuk menghitung nilai faktorial dari suatu bilangan secara rekursif?
a)
Bubble Sort
b)
Linear Search
c)
Quick Sort
d)
Recursive Function
19.
Pada pengembangan aplikasi pustaka online, teknik pemecahan masalah apa yang cocok digunakan untuk mencari buku berdasarkan kategori dengan cepat?
a)
Bubble Sort
b)
Linear Search
c)
Binary Search
d)
Hashing
20.
Pada proyek pengembangan aplikasi toko online, teknik pemecahan masalah apa yang paling efisien digunakan untuk mengurutkan daftar produk berdasarkan harga dari yang termurah?
a)
Bubble Sort
b)
Insertion Sort
c)
Quick Sort
d)
Merge Sort
21.
Apa yang dimaksud dengan graf dalam struktur data?
a)
Kumpulan elemen data yang diurutkan.
b)
Struktur data yang hanya berisi satu elemen.
c)
Struktur data yang terdiri dari simpul-simpul yang terhubung oleh sisi-sisi.
d)
Metode untuk menghitung nilai rata-rata dari kumpulan data.
22.
Manakah dari berikut ini adalah representasi graf dengan matriks ketetanggaan?
a)
Linked List
b)
Array 1D
c)
Array 2D
d)
Heap
23.
Apa nama operasi untuk mengunjungi setiap simpul pada graf tepat satu kali?
a)
Traversal
b)
Sorting
c)
Searching
d)
Shortest Path
24.
Apakah algoritma yang digunakan untuk mencari lintasan terpendek antara dua simpul pada graf dengan bobot sisi?
a)
BFS (Breadth-First Search)
b)
DFS (Depth-First Search)
c)
Dijkstra
d)
Bubble Sort
25.
Berikut adalah graf yang direpresentasikan dalam bentuk matriks ketetanggaan. Tentukan hasil dari operasi BFS (Breadth-First Search) dimulai dari simpul 1. 1 2 3 1 0 1 1 2 1 0 1 3 1 1 0
a)
1 - 2 - 3
b)
1 - 3 - 2
c)
1 - 2 - 1 - 3 - 2
d)
1 - 3 - 1 - 2 - 3
26.
Pilihlah algoritma traversal yang paling cocok untuk mencari jalur dari simpul A ke simpul F pada graf berikut:
a)
DFS (Depth-First Search)
b)
BFS (Breadth-First Search)
c)
Keduanya bisa digunakan
27.
Pilihlah algoritma traversal yang paling efisien untuk mencari jalur dari simpul A ke simpul G pada graf berikut:
a)
DFS (Depth-First Search)
b)
BFS (Breadth-First Search)
c)
Keduanya sama efisien
28.
Pilihlah algoritma yang tepat untuk mencari jalur terpendek dari simpul A ke simpul E pada graf berikut menggunakan bobot yang diberikan:
a)
DFS (Depth-First Search)
b)
BFS (Breadth-First Search)
c)
Dijkstra
29.
Pilihlah algoritma traversal yang paling cocok untuk mencari jalur dari simpul S ke simpul C pada graf berikut:
a)
DFS (Depth-First Search)
b)
BFS (Breadth-First Search)
c)
Keduanya bisa digunakan
30.
Pilihlah algoritma yang tepat untuk mencari jalur terpendek dari simpul S ke simpul C pada graf berikut menggunakan bobot yang diberikan:
a)
DFS (Depth-First Search)
b)
BFS (Breadth-First Search)
c)
Dijkstra
31.
Pernyataan yang benar tentang pemrograman dinamis adalah:
a)
Pemrograman dinamis selalu lebih efisien daripada pendekatan brute force.
b)
Pemrograman dinamis hanya dapat digunakan untuk menyelesaikan masalah dengan pendekatan rekursif.
c)
Pemrograman dinamis menggunakan pendekatan memoisasi untuk menyimpan hasil perhitungan submasalah.
d)
Pemrograman dinamis tidak dapat digunakan untuk menemukan jalur terpendek dalam graf berbobot.
32.
Manfaat utama pemrograman dinamis adalah:
a)
Mengurangi kompleksitas waktu dan ruang algoritma.
b)
Mengeliminasi kebutuhan untuk menggunakan struktur data.
c)
Meningkatkan kompleksitas waktu algoritma secara eksponensial.
d)
Menggantikan pendekatan rekursif dengan pendekatan iteratif.
33.
Pada pemrograman dinamis, apa yang dimaksud dengan "overlapping subproblems"?
a)
Submasalah yang tumpang tindih pada matriks.
b)
Submasalah yang sama harus dihitung berulang kali.
c)
Submasalah yang ukurannya lebih kecil daripada masalah asli.
d)
Submasalah yang dipecahkan secara iteratif.
34.
Pada algoritma penyelesaian masalah knapsack, pemrograman dinamis digunakan untuk:
a)
Mengurutkan barang-barang dalam knapsack.
b)
Menghitung total nilai dari semua barang dalam knapsack.
c)
Menemukan kombinasi barang yang memberikan total nilai maksimal.
d)
Menghitung total berat dari semua barang dalam knapsack.
35.
Algoritma Dijkstra digunakan untuk:
a)
Menemukan jalur terpendek antara dua simpul dalam graf berbobot.
b)
Menemukan lintasan terpendek pada graf tak berbobot.
c)
Menemukan semua simpul yang terhubung dengan simpul awal dalam graf.
d)
Menemukan jalur terpanjang antara dua simpul dalam graf berbobot.
36.
Apa yang dimaksud dengan algoritma?
a)
Sebuah program komputer
b)
Sebuah rangkaian langkah untuk menyelesaikan masalah
c)
Sebuah tipe data dalam pemrograman
d)
Sebuah variabel dalam pemrograman
37.
Apa tujuan dari analisis algoritma?
a)
Memahami kompleksitas waktu dan ruang suatu algoritma
b)
Mengimplementasikan algoritma ke dalam bahasa pemrograman
c)
Menguji kebenaran algoritma dengan menggunakan testcase
d)
Meningkatkan kecepatan eksekusi suatu algoritma
38.
Apa yang dimaksud dengan flowchart?
a)
Representasi visual dari algoritma menggunakan simbol-simbol grafis
b)
Sebuah tipe data dalam pemrograman
c)
Sebuah metode pengurutan data dalam pemrograman
d)
Representasi algoritma menggunakan bahasa manusia yang disederhanakan
39.
Apa perbedaan antara pseudocode dan bahasa pemrograman?
a)
Pseudocode adalah bahasa pemrograman yang digunakan untuk mengimplementasikan algoritma
b)
Pseudocode adalah representasi algoritma dalam bentuk grafis
c)
Bahasa pemrograman adalah representasi algoritma menggunakan bahasa manusia yang disederhanakan
d)
Bahasa pemrograman memiliki sintaksis dan aturan yang ketat, sedangkan pseudocode tidak
40.
Apa yang dimaksud dengan kompleksitas waktu algoritma?
a)
Jumlah langkah yang diperlukan untuk menyelesaikan algoritma
b)
Waktu yang dibutuhkan untuk menulis algoritma
c)
Jumlah instruksi dalam algoritma
d)
Penggunaan memori oleh algoritma
41.
Apa yang dimaksud dengan struktur data array?
a)
Sebuah tipe data yang dapat menyimpan multiple values of the same data type.
b)
Sebuah tipe data yang hanya dapat menyimpan satu nilai pada satu waktu.
c)
Sebuah tipe data yang hanya dapat menyimpan karakter.
d)
Sebuah tipe data yang tidak bisa diubah setelah dideklarasikan.
42.
Apa yang dimaksud dengan array dua dimensi?
a)
Sebuah array yang dapat menyimpan elemen dengan tipe data yang berbeda-beda.
b)
Sebuah array yang dapat menyimpan karakter.
c)
Sebuah array yang dapat menyimpan multiple values of the same data type.
d)
Sebuah array yang dapat menyimpan elemen dengan ukuran yang dapat diubah.
43.
Bagaimana cara mengakses elemen dalam array?
a)
Menggunakan perintah "access" diikuti dengan nama array.
b)
Menggunakan perintah "get" diikuti dengan indeks elemen yang ingin diakses.
c)
Menggunakan perintah "index" diikuti dengan nama array.
d)
Menggunakan perintah "element" diikuti dengan indeks elemen yang ingin diakses.
44.
Apa yang dimaksud dengan indeks dalam array?
a)
Sebuah nilai yang menunjukkan jumlah elemen dalam array.
b)
Sebuah nilai yang menunjukkan posisi relatif suatu elemen dalam array.
c)
Sebuah tipe data yang digunakan untuk menyimpan nilai-nilai dalam array.
d)
Sebuah perintah untuk menghapus elemen dari array.
45.
Apa yang dimaksud dengan array dinamis?
a)
Sebuah array yang ukurannya dapat diubah setelah dideklarasikan.
b)
Sebuah array yang hanya dapat menyimpan satu nilai pada satu waktu.
c)
Sebuah array yang dapat menyimpan elemen dengan ukuran yang dapat diubah.
d)
Sebuah array yang dapat menyimpan multiple values of the same data type.
46.
Apa yang dimaksud dengan Linked List?
a)
Sebuah struktur data yang terdiri dari elemen-elemen yang terhubung satu sama lain melalui pointer.
b)
Sebuah tipe data yang digunakan untuk menyimpan elemen-elemen dalam urutan terurut.
c)
Sebuah algoritma yang digunakan untuk mencari elemen tertentu dalam sebuah array.
d)
Sebuah operasi yang digunakan untuk mengurutkan elemen-elemen dalam sebuah struktur data.
47.
Apa perbedaan utama antara linked list dan array?
a)
Linked list memerlukan alokasi memori statis, sedangkan array memerlukan alokasi memori dinamis.
b)
Linked list memiliki ukuran tetap, sedangkan array memiliki ukuran yang fleksibel.
c)
Linked list menyimpan data dalam urutan terurut, sedangkan array tidak menyimpan data dalam urutan terurut.
d)
Linked list memungkinkan penambahan dan penghapusan elemen dengan mudah, sedangkan array tidak mendukung operasi tersebut secara efisien.
48.
Apa fungsi dari pointer dalam linked list?
a)
Menyimpan data yang terkait dengan setiap elemen dalam linked list.
b)
Menghubungkan elemen-elemen dalam linked list menjadi sebuah struktur data.
c)
Menunjukkan posisi elemen pertama dalam linked list.
d)
Menyimpan ukuran atau panjang dari linked list.
49.
Bagaimana cara menambahkan elemen di awal linked list?
a)
Membuat node baru dan mengatur pointer next node baru ke node pertama.
b)
Membuat node baru dan mengatur pointer next node pertama ke node baru.
c)
Membuat node baru dan mengatur pointer next node terakhir ke node baru.
d)
Membuat node baru dan mengatur pointer next node terakhir ke node pertama.
50.
Bagaimana cara menghapus elemen dari linked list?
a)
Mengubah nilai data pada elemen yang ingin dihapus menjadi NULL.
b)
Menggeser elemen-elemen lain untuk mengisi posisi elemen yang dihapus.
c)
Mengatur pointer next dari elemen sebelum elemen yang dihapus ke elemen setelah elemen yang dihapus.
d)
Mengubah pointer next dari elemen yang dihapus menjadi NULL.
51.
Apa perbedaan utama antara Linked List Sederhana (Singly Linked List) dan Linked List Ganda (Doubly Linked List)?
a)
Linked List Sederhana hanya memiliki satu pointer next, sedangkan Linked List Ganda memiliki dua pointer next dan prev.
b)
Linked List Sederhana menggunakan alokasi memori yang lebih efisien daripada Linked List Ganda.
c)
Linked List Ganda hanya dapat melakukan traversal maju, sedangkan Linked List Sederhana dapat melakukan traversal maju dan mundur.
d)
Linked List Ganda lebih sering digunakan dalam implementasi antrian (queue), sedangkan Linked List Sederhana lebih sering digunakan dalam implementasi tumpukan (stack).
52.
Prinsip operasi pada struktur data stack adalah:
a)
First-In-First-Out (FIFO).
b)
Last-In-First-Out (LIFO).
c)
Random-In-Random-Out (RIRO).
d)
Sequential-In-Sequential-Out (SISO).
53.
Operasi yang digunakan untuk menambahkan elemen baru ke dalam stack disebut:
a)
Push
b)
Pop
c)
Peek
d)
IsEmpty
54.
Operasi yang digunakan untuk menghapus elemen paling atas dari stack disebut:
a)
Push
b)
Pop
c)
Peek
d)
IsEmpty
55.
Operasi yang digunakan untuk melihat elemen paling atas pada stack tanpa menghapusnya disebut:
a)
Push
b)
Pop
c)
Peek
d)
IsEmpty
56.
Operasi yang digunakan untuk memeriksa apakah stack kosong disebut:
a)
Push
b)
Pop
c)
Peek
d)
IsEmpty
57.
Sintaksis umum untuk menambahkan elemen ke dalam stack adalah:
a)
stack.push(element);
b)
stack.pop();
c)
stack.top();
d)
stack.isEmpty();
58.
Sintaksis umum untuk menghapus elemen paling atas dari stack adalah:
a)
stack.push(element);
b)
stack.pop();
c)
stack.top();
d)
stack.isEmpty();
59.
Sintaksis umum untuk melihat elemen paling atas pada stack tanpa menghapusnya adalah:
a)
stack.push(element);
b)
stack.pop();
c)
stack.top();
d)
stack.isEmpty();
60.
Sintaksis umum untuk memeriksa apakah stack kosong adalah:
a)
stack.push(element);
b)
stack.pop();
c)
stack.top();
d)
stack.isEmpty();
61.
Struktur data stack digunakan untuk mengakses elemen-elemen dalam urutan:
a)
Terurut
b)
Acak
c)
Terbalik
d)
Alfanumerik
62.
Operasi apa yang digunakan untuk menambahkan elemen baru ke dalam queue?
a)
Push
b)
Pop
c)
Enqueue
d)
Dequeue
63.
Apa yang terjadi ketika operasi dequeue dilakukan pada queue kosong?
a)
Queue akan dihapus secara keseluruhan.
b)
Elemen terakhir dalam queue akan dihapus.
c)
Tidak ada perubahan pada queue.
d)
Pesan kesalahan akan ditampilkan.
64.
Apa yang dimaksud dengan konsep FIFO dalam queue?
a)
Elemen terakhir yang masuk adalah elemen pertama yang keluar.
b)
Elemen pertama yang masuk adalah elemen pertama yang keluar.
c)
Elemen terakhir yang masuk adalah elemen terakhir yang keluar.
d)
Elemen pertama yang masuk adalah elemen terakhir yang keluar.
65.
Apa yang terjadi pada rear saat operasi enqueue dilakukan pada queue kosong?
a)
Rear tetap tidak berubah.
b)
Rear akan berpindah ke posisi awal queue.
c)
Rear akan berpindah ke posisi akhir queue.
d)
Rear akan menjadi -1.
66.
Apa yang terjadi pada front saat operasi dequeue dilakukan pada queue kosong?
a)
Front tetap tidak berubah.
b)
Front akan berpindah ke posisi awal queue.
c)
Front akan berpindah ke posisi akhir queue.
d)
Front akan menjadi -1.
67.
Algoritma pencarian yang melakukan pencarian secara berurutan dari awal hingga akhir struktur data disebut:
a)
Pencarian linier
b)
Pencarian biner
c)
Pencarian hashing
d)
Pencarian indeks
68.
Metode pencarian biner memanfaatkan sifat terurut dari struktur data untuk mencari elemen dengan membagi struktur data menjadi dua bagian setiap langkahnya. Metode ini memiliki kompleksitas waktu:
a)
O(1)
b)
O(log n)
c)
O(n)
d)
O(n^2)
69.
Algoritma pencarian yang menggunakan indeks khusus untuk mempercepat proses pencarian disebut:
a)
Pencarian linier
b)
Pencarian biner
c)
Pencarian hashing
d)
Pencarian indeks
70.
Teknik pencarian yang mengindeks data dan mempercepat proses pencarian dengan menggunakan fungsi hash disebut:
a)
Pencarian linier
b)
Pencarian biner
c)
Pencarian hashing
d)
Pencarian indeks
71.
Pencarian yang membagi struktur data menjadi dua bagian setiap langkahnya, kemudian mencari di salah satu bagian tergantung pada nilai tengah, adalah deskripsi dari:
a)
Pencarian linier
b)
Pencarian biner
c)
Pencarian hashing
d)
Pencarian indeks
72.

Berikut adalah potongan kode untuk mencari elemen maksimum dalam sebuah array menggunakan algoritma Linear Search:

Pertanyaan: Berapakah kompleksitas waktu algoritma ini?

a)

O(1)

b)

O(n)

c)

O(n^2)

d)

O(log n)

73.

Berikut adalah potongan kode untuk mencari elemen maksimum dalam sebuah array menggunakan algoritma Linear Search:

Pertanyaan: Berapakah kompleksitas waktu algoritma ini?

a)

O(1)

b)

O(n)

c)

O(n^2)

d)

O(log n)

74.

Berikut adalah potongan kode untuk mengurutkan sebuah array menggunakan algoritma Bubble Sort:
Pertanyaan: Berapakah kompleksitas waktu algoritma ini?

a)

O(1)

b)

O(n)

c)

O(n^2)

d)

O(log n)

75.

Berikut adalah potongan kode untuk mencari bilangan Fibonacci ke-n menggunakan pendekatan rekursif:
Pertanyaan: Berapakah kompleksitas waktu algoritma ini?

a)

O(1)

b)

O(n)

c)

O(n^2)

d)

O(2^n)

76.

Berikut adalah potongan kode untuk mencari elemen tertentu dalam sebuah array menggunakan algoritma Binary Search:
Pertanyaan: Berapakah kompleksitas waktu algoritma ini?

a)

O(1)

b)

O(n)

c)

O(log n)

d)

O(n log n)

77.

Berikut adalah potongan kode untuk mencari nilai terkecil dalam sebuah array menggunakan algoritma Linear Search:
Pertanyaan: Berapakah kompleksitas waktu algoritma ini?

a)

O(1)

b)

O(n)

c)

O(n^2)

d)

O(log n)

78.

Fungsi merupakan program bagian yang terpisah dalam blok sendiri. Tujuan pembuatan fungsi adalah ...

a)

Program menjadi terstruktur

b)

Mengurangi duplikasi kode

c)

Dapat dipanggil berulang kali sesuai kebutuhan

d)

Semua benar

79.

Suatu sub program diakatakan prosedur apabila menggunakan tipe data .....

a)

void

b)

bool

c)

char

d)

int

80.

Tempat untuk menyimpan nilai data yang berubah-ubah di memori adalah ...

a)

Tipe Data

b)

Konstanta

c)

Variabel

d)

Fungsi