Anda di halaman 1dari 7

SOAL UJIAN TENGAH SEMESTER (UTS)

PROGRAM STUDI DIII SISTEM INFORMASI


FAKULTAS ILMU KOMPUTER
UNIVERSITAS MUHAMMDIYAH METRO
Mata Kuliah : Algoritma dan Pemrograman 3
Hari/Tanggal : Jumat, 27 Oktober 2023
Tempat : Ruang Lab 1
Waktu : 08.00 – selesai
Sifat Ujian : Open Book/Note
Dosen Pengampu : Ika Arthalia Wulandari, S.Kom., M.Kom

Petunjuk:
- Sebelum mengerjakan soal, berdoa terlebih dahulu
- Baca soal dengan teliti sebelum menjawabnya

1. (30) Lakukan ilustrasi sorting terhadap data array berikut,

8 1 4 7 3 2

Menggunakan metode (NPM genap : ascending dan NPM ganjil : descending) :


a) Selection sort
b) Insertion sort
c) Bubble sort
2. (10)Tukar dua data yang dibawah ini dengan menggunakan metode swap
data[i] = 5;
data[j] = 2;
3. Buatlah program Sorting yang dapat melakukan sorting dengan ketentuan
a. (15) User dapat memilih memilih metode sorting apa yang akan digunakan
b. (15) Jumlah data dapat ditentukan oleh user
c. (15) Data diinputkan oleh user bukan masuk ke dalam program
d. (15) Hasil harus menunjukkan proses sortingnya
Nama : Fatimah Azzahro
NPM : 22410002
MK : Algoritma Pemrograman 3 dan Struktur Data
Prodi : D-III Sistem Informasi

Jawaban No.1
#include <iostream>
using namespace std;

// Selection Sort
void selectionSort(int arr[], int n) {
for (int i = 0; i < n - 1; i++) {
int min_idx = i;
for (int j = i + 1; j < n; j++) {
if (arr[j] < arr[min_idx]) {
min_idx = j;
}
}
swap(arr[min_idx], arr[i]);
}
}

// Insertion Sort
void insertionSort(int arr[], int n) {
for (int i = 1; i < n; i++) {
int key = arr[i];
int j = i - 1;
while (j >= 0 && arr[j] > key) {
arr[j + 1] = arr[j];
j = j - 1;
}
arr[j + 1] = key;
}
}

// Bubble Sort
void bubbleSort(int arr[], int n) {
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
swap(arr[j], arr[j + 1]);
}
}
}
}
void printArray(int arr[], int n) {
for (int i = 0; i < n; i++) {
cout << arr[i] << " ";
}
cout << endl;
}

int main() {
int arr[] = {8, 1, 4, 7, 3, 2};
int n = sizeof(arr) / sizeof(arr[0]);

// NPM genap: ascending, NPM ganjil: descending


int npm = 12345; // Ganti dengan NPM Anda

if (npm % 2 == 0) {
// NPM genap
cout << "Selection Sort (Ascending): ";
selectionSort(arr, n);
printArray(arr, n);

cout << "Insertion Sort (Ascending): ";


insertionSort(arr, n);
printArray(arr, n);

cout << "Bubble Sort (Ascending): ";


bubbleSort(arr, n);
printArray(arr, n);
} else {
// NPM ganjil
cout << "Selection Sort (Descending): ";
selectionSort(arr, n);
for (int i = n - 1; i >= 0; i--) {
cout << arr[i] << " ";
}
cout << endl;

cout << "Insertion Sort (Descending): ";


insertionSort(arr, n);
for (int i = n - 1; i >= 0; i--) {
cout << arr[i] << " ";
}
cout << endl;

cout << "Bubble Sort (Descending): ";


bubbleSort(arr, n);
for (int i = n - 1; i >= 0; i--) {
cout << arr[i] << " ";
}
cout << endl;
}

return 0;
}
Jawaban No.2
#include <iostream>
using namespace std;
int main () {
int data [6]= {8, 1, 4, 7, 3, 2};
cout<<"Sebelum dilakukan pertukaran"<<endl;
int swap;
cout<<" Isi Array: ";
for (int k= 0; k<6; ++k) {
cout<< data[k] << " ,";
}
cout<<endl;
//data [i]=5;
//data [j]=2;
swap= data [5] ;
data [5] = data [2];
data [2] = swap;
cout<<"Pertukaran Data[i] dan Data[j]: ";
for (int k=0; k<6; ++k) {
cout<<data[k] << " ,";
}
cout<<endl;
}
Jawaban No.3
#include <iostream>
using namespace std;
int main () {
int temp, i, j, n;
cout<<"Masukkan Banyak Data: ";cin>>n;
int data[n];
for (int i=0; i<n; i++) {
cout<<"Masukkan Data Ke "<<i<<" : ";cin>>data[i];
cout<<endl;
}
for (i=0; i<n; i++) {
temp=data[i];
j=i-1;
while(temp<=data[j] && j>0) {
data[j+1] = data[j];
j=j-1;
}
if(temp>data[j]) data[j+1] = temp;
else {
data[j+1]=data[j];
data[j] = temp;
}
cout<<"Step ke "<<i+1<<" : ";
for(int m=0; m<n; m++){
cout<<data[m]<<" ";
}
cout<<endl<<endl;
}
cout<<"Data Setelah di Sorting: ";
for(int m=0; m<n; m++) {
cout<<data[m]<<" ";
} cout<<endl;
}

Anda mungkin juga menyukai