From 4f7de56607a1c1054ac405ab13b8a7f35ba6ee07 Mon Sep 17 00:00:00 2001 From: 202310715123 FARIS NAUFAL PRIATNA <202310715123@mhs.ubharajaya.ac.id> Date: Mon, 6 Oct 2025 23:01:14 +0700 Subject: [PATCH] Tugas 3 Android Studio Tugas Android Studio(3) Membuat Sort Pengurutan --- MainActivity.kt | 83 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 MainActivity.kt diff --git a/MainActivity.kt b/MainActivity.kt new file mode 100644 index 0000000..f57980f --- /dev/null +++ b/MainActivity.kt @@ -0,0 +1,83 @@ +package com.example.selectionsort + +import android.os.Bundle +import androidx.activity.ComponentActivity +import androidx.activity.compose.setContent +import androidx.activity.enableEdgeToEdge +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.rememberScrollState +import androidx.compose.foundation.verticalScroll +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Scaffold +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.remember +import androidx.compose.ui.Modifier +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import com.example.selectionsort.ui.theme.SelectionSortTheme + +class MainActivity : ComponentActivity() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + enableEdgeToEdge() + setContent { + SelectionSortTheme { + Scaffold(modifier = Modifier.fillMaxSize()) { innerPadding -> + SelectionSortScreen(modifier = Modifier.padding(innerPadding)) + } + } + } + } +} + +@Composable +fun SelectionSortScreen(modifier: Modifier = Modifier) { + val numbers = remember { (1..40).toList() } + val shuffledNumbers = remember { numbers.shuffled() } + + val sortedNumbers = remember { + shuffledNumbers.toMutableList().apply { + for (i in 0 until size - 1) { + var minIndex = i + for (j in i + 1 until size) { + if (this[j] < this[minIndex]) { + minIndex = j + } + } + if (minIndex != i) { + val temp = this[i] + this[i] = this[minIndex] + this[minIndex] = temp + } + } + } + } + + Column( + modifier = modifier + .padding(16.dp) + .verticalScroll(rememberScrollState()) + ) { + Text(text = "Angka sebelum di urut (acak):") + Text(text = shuffledNumbers.joinToString(", ")) + Text(text = "") + Text(text = "Angka sudah di urut (Selection Sort):") + Text(text = sortedNumbers.joinToString(", ")) + + Text(text = "") + Text(text = "Penjelasan Selection Sort:") + Text(text = "Selection Sort bekerja dengan cara mencari angka terkecil dari daftar yang belum diurutkan,") + Text(text = "kemudian menukarnya dengan angka paling kiri yang belum diurutkan. Proses ini diulang terus sampai seluruh angka terurut dari yang terkecil ke terbesar.") + } +} + +@Preview(showBackground = true) +@Composable +fun SelectionSortScreenPreview() { + SelectionSortTheme { + SelectionSortScreen() + } +}