84 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Kotlin
		
	
	
	
	
	
			
		
		
	
	
			84 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Kotlin
		
	
	
	
	
	
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()
 | 
						|
    }
 | 
						|
}
 |