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() } }