# LATIHAN MATERI 3
# NOMOR 1
# NOMOR 1 (Seleksi Maksimum)
selection_max <- function(data) {
arr <- data
n <- length(arr)
for (i in 1:(n - 1)) {
max_idx <- i
for (j in (i + 1):n) {
if (arr[j] > arr[max_idx]) {
max_idx <- j
}
}
temp <- arr[i]
arr[i] <- arr[max_idx]
arr[max_idx] <- temp
cat("Pass", i, ":", arr, "\n")
}
return(arr)
}
# NOMOR 1 (Seleksi Minimum)
selection_min <- function(data) {
arr <- data
n <- length(arr)
for (i in 1:(n - 1)) {
min_idx <- i
for (j in (i + 1):n) {
if (arr[j] < arr[min_idx]) {
min_idx <- j
}
}
temp <- arr[i]
arr[i] <- arr[min_idx]
arr[min_idx] <- temp
cat("Pass", i, ":", arr, "\n")
}
return(arr)
}
data <- c(25, 22, 18, 20, 15)
cat("SELECTION MAXIMUM\n")
## SELECTION MAXIMUM
print(selection_max(data))
## Pass 1 : 25 22 18 20 15
## Pass 2 : 25 22 18 20 15
## Pass 3 : 25 22 20 18 15
## Pass 4 : 25 22 20 18 15
## [1] 25 22 20 18 15
cat("\nSELECTION MINIMUM\n")
##
## SELECTION MINIMUM
print(selection_min(data))
## Pass 1 : 15 22 18 20 25
## Pass 2 : 15 18 22 20 25
## Pass 3 : 15 18 20 22 25
## Pass 4 : 15 18 20 22 25
## [1] 15 18 20 22 25
# NOMOR 2
insertion_sort <- function(data) {
arr <- data
n <- length(arr)
perbandingan <- 0
pergeseran <- 0
for (i in 2:n) {
key <- arr[i]
j <- i - 1
while (j >= 1) {
perbandingan <- perbandingan + 1
if (arr[j] > key) {
arr[j + 1] <- arr[j]
pergeseran <- pergeseran + 1
j <- j - 1
} else {
break
}
}
arr[j + 1] <- key
cat("Pass", i - 1, ":", arr, "\n")
}
cat("Hasil:", arr, "\n")
cat("Perbandingan:", perbandingan, "\n")
cat("Pergeseran:", pergeseran, "\n")
return(arr)
}
cat("DATA PERTAMA\n")
## DATA PERTAMA
insertion_sort(c(5, 4, 3, 2, 1))
## Pass 1 : 4 5 3 2 1
## Pass 2 : 3 4 5 2 1
## Pass 3 : 2 3 4 5 1
## Pass 4 : 1 2 3 4 5
## Hasil: 1 2 3 4 5
## Perbandingan: 10
## Pergeseran: 10
## [1] 1 2 3 4 5
cat("\nDATA KEDUA\n")
##
## DATA KEDUA
insertion_sort(c(1, 2, 3, 5, 4))
## Pass 1 : 1 2 3 5 4
## Pass 2 : 1 2 3 5 4
## Pass 3 : 1 2 3 5 4
## Pass 4 : 1 2 3 4 5
## Hasil: 1 2 3 4 5
## Perbandingan: 5
## Pergeseran: 1
## [1] 1 2 3 4 5
# NOMOR 3
selection_sort_record <- function(data) {
arr <- data
n <- nrow(arr)
for (i in 1:(n - 1)) {
min_idx <- i
for (j in (i + 1):n) {
if (arr$nilai[j] < arr$nilai[min_idx]) {
min_idx <- j
}
}
temp <- arr[i, ]
arr[i, ] <- arr[min_idx, ]
arr[min_idx, ] <- temp
}
return(arr)
}
data <- data.frame(
nama = c("Adey", "Dian", "Dean"),
nilai = c(2, 2, 1)
)
print("Sebelum:")
## [1] "Sebelum:"
print(data)
## nama nilai
## 1 Adey 2
## 2 Dian 2
## 3 Dean 1
print("Sesudah:")
## [1] "Sesudah:"
print(selection_sort_record(data))
## nama nilai
## 1 Dean 1
## 2 Dian 2
## 3 Adey 2