package com.example.Kalkulator import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.compose.foundation.background import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items import androidx.compose.material3.Button import androidx.compose.material3.OutlinedTextField import androidx.compose.material3.Scaffold import androidx.compose.material3.Text import androidx.compose.material3.TopAppBar import androidx.compose.material3.TopAppBarDefaults import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { SelectionSortApp() } } } @Composable fun SelectionSortApp() { var inputText by remember { mutableStateOf("") } var numbers by remember { mutableStateOf(listOf()) } var sortedNumbers by remember { mutableStateOf(listOf()) } fun selectionSort(list: List): List { val arr = list.toMutableList() for (i in 0 until arr.size - 1) { var minIndex = i for (j in i + 1 until arr.size) { if (arr[j] < arr[minIndex]) { minIndex = j } } // Tukar posisi elemen val temp = arr[i] arr[i] = arr[minIndex] arr[minIndex] = temp } return arr } Scaffold( topBar = { TopAppBar( title = { Text("Selection Sort Demo") }, colors = TopAppBarDefaults.topAppBarColors( containerColor = Color(0xFF1565C0), titleContentColor = Color.White ) ) } ) { padding -> Column( modifier = Modifier .padding(padding) .fillMaxSize() .padding(16.dp), horizontalAlignment = Alignment.CenterHorizontally ) { Text( "Masukkan angka dipisahkan dengan koma (contoh: 5,3,8,1,4)", fontSize = 16.sp ) Spacer(modifier = Modifier.height(10.dp)) OutlinedTextField( value = inputText, onValueChange = { inputText = it }, label = { Text("Input Angka") }, singleLine = true, modifier = Modifier.fillMaxWidth() ) Spacer(modifier = Modifier.height(16.dp)) Button(onClick = { try { numbers = inputText.split(",").map { it.trim().toInt() } sortedNumbers = selectionSort(numbers) } catch (e: Exception) { sortedNumbers = emptyList() } }) { Text("Urutkan (Selection Sort)") } Spacer(modifier = Modifier.height(20.dp)) if (sortedNumbers.isNotEmpty()) { Text("Hasil Pengurutan:", fontWeight = FontWeight.Bold, fontSize = 18.sp) Spacer(modifier = Modifier.height(8.dp)) LazyColumn { items(sortedNumbers) { num -> Box( modifier = Modifier .fillMaxWidth() .padding(4.dp) .background(Color(0xFFBBDEFB)) .padding(12.dp) ) { Text(text = num.toString(), fontSize = 20.sp) } } } } } } }