Upload files to "/"
Tugas 3 Kalkulator
This commit is contained in:
		
						commit
						1a2306ba55
					
				
							
								
								
									
										97
									
								
								MainActivity.kt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										97
									
								
								MainActivity.kt
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,97 @@
 | 
				
			|||||||
 | 
					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) {
 | 
				
			||||||
 | 
					    // Daftar angka acak 10 elemen antara 10–99
 | 
				
			||||||
 | 
					    val numbers = remember { (10..99).shuffled().take(10) }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // Proses Selection Sort
 | 
				
			||||||
 | 
					    val sortedNumbers = remember {
 | 
				
			||||||
 | 
					        numbers.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 = "🔢 Daftar Angka Sebelum Diurutkan:",
 | 
				
			||||||
 | 
					            style = MaterialTheme.typography.titleMedium
 | 
				
			||||||
 | 
					        )
 | 
				
			||||||
 | 
					        Text(text = numbers.joinToString(", "))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Text(text = "")
 | 
				
			||||||
 | 
					        Text(
 | 
				
			||||||
 | 
					            text = "✅ Hasil Setelah Diurutkan (Selection Sort):",
 | 
				
			||||||
 | 
					            style = MaterialTheme.typography.titleMedium
 | 
				
			||||||
 | 
					        )
 | 
				
			||||||
 | 
					        Text(text = sortedNumbers.joinToString(", "))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Text(text = "")
 | 
				
			||||||
 | 
					        Text(
 | 
				
			||||||
 | 
					            text = "🧠 Cara Kerja Selection Sort:",
 | 
				
			||||||
 | 
					            style = MaterialTheme.typography.titleMedium
 | 
				
			||||||
 | 
					        )
 | 
				
			||||||
 | 
					        Text(
 | 
				
			||||||
 | 
					            text = "Algoritma ini mencari nilai terkecil dari bagian data yang belum diurutkan, " +
 | 
				
			||||||
 | 
					                    "lalu menukarnya dengan posisi paling depan. Langkah ini diulang terus " +
 | 
				
			||||||
 | 
					                    "hingga seluruh data terurut dari yang terkecil ke terbesar."
 | 
				
			||||||
 | 
					        )
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@Preview(showBackground = true)
 | 
				
			||||||
 | 
					@Composable
 | 
				
			||||||
 | 
					fun SelectionSortScreenPreview() {
 | 
				
			||||||
 | 
					    SelectionSortTheme {
 | 
				
			||||||
 | 
					        SelectionSortScreen()
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user