Upload files to "/"
Tugas 3 Android Studio Selection Sort
This commit is contained in:
		
						commit
						1a7670980a
					
				
							
								
								
									
										133
									
								
								MainActivity.kt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										133
									
								
								MainActivity.kt
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,133 @@
 | 
			
		||||
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<Int>()) }
 | 
			
		||||
    var sortedNumbers by remember { mutableStateOf(listOf<Int>()) }
 | 
			
		||||
 | 
			
		||||
    fun selectionSort(list: List<Int>): List<Int> {
 | 
			
		||||
        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)
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user