Selection Sort
Sort an array in ascending order using selection sort (repeatedly pick the minimum).
Sample input
[64, 25, 12, 22, 11]
Sample output
11 12 22 25 64
Solution
arr = [64, 25, 12, 22, 11]
n = len(arr)
for i in range(n):
min_idx = i
for j in range(i + 1, n):
if arr[j] < arr[min_idx]:
min_idx = j
arr[i], arr[min_idx] = arr[min_idx], arr[i]
print(*arr)
const arr = [64, 25, 12, 22, 11];
const n = arr.length;
for (let i = 0; i < n; i++) {
let minIdx = i;
for (let j = i + 1; j < n; j++) {
if (arr[j] < arr[minIdx]) minIdx = j;
}
[arr[i], arr[minIdx]] = [arr[minIdx], arr[i]];
}
console.log(arr.join(" "));
public class Main {
public static void main(String[] args) {
int[] arr = {64, 25, 12, 22, 11};
int n = arr.length;
for (int i = 0; i < n; i++) {
int minIdx = i;
for (int j = i + 1; j < n; j++) {
if (arr[j] < arr[minIdx]) minIdx = j;
}
int t = arr[i];
arr[i] = arr[minIdx];
arr[minIdx] = t;
}
StringBuilder sb = new StringBuilder();
for (int i = 0; i < n; i++) {
sb.append(arr[i]);
if (i < n - 1) sb.append(" ");
}
System.out.println(sb.toString());
}
}
fun main() {
val arr = intArrayOf(64, 25, 12, 22, 11)
val n = arr.size
for (i in 0 until n) {
var minIdx = i
for (j in i + 1 until n) {
if (arr[j] < arr[minIdx]) minIdx = j
}
val t = arr[i]
arr[i] = arr[minIdx]
arr[minIdx] = t
}
println(arr.joinToString(" "))
}
var arr = [64, 25, 12, 22, 11]
let n = arr.count
for i in 0..<n {
var minIdx = i
for j in (i + 1)..<n {
if arr[j] < arr[minIdx] {
minIdx = j
}
}
arr.swapAt(i, minIdx)
}
print(arr.map { String($0) }.joined(separator: " "))
void main() {
List<int> arr = [64, 25, 12, 22, 11];
int n = arr.length;
for (int i = 0; i < n; i++) {
int minIdx = i;
for (int j = i + 1; j < n; j++) {
if (arr[j] < arr[minIdx]) minIdx = j;
}
int t = arr[i];
arr[i] = arr[minIdx];
arr[minIdx] = t;
}
print(arr.join(' '));
}
#include <iostream>
using namespace std;
int main() {
int arr[] = {64, 25, 12, 22, 11};
int n = 5;
for (int i = 0; i < n; i++) {
int minIdx = i;
for (int j = i + 1; j < n; j++) {
if (arr[j] < arr[minIdx]) minIdx = j;
}
int t = arr[i];
arr[i] = arr[minIdx];
arr[minIdx] = t;
}
for (int i = 0; i < n; i++) {
cout << arr[i];
if (i < n - 1) cout << " ";
}
cout << endl;
return 0;
}
#include <stdio.h>
int main() {
int arr[] = {64, 25, 12, 22, 11};
int n = 5;
for (int i = 0; i < n; i++) {
int minIdx = i;
for (int j = i + 1; j < n; j++) {
if (arr[j] < arr[minIdx]) minIdx = j;
}
int t = arr[i];
arr[i] = arr[minIdx];
arr[minIdx] = t;
}
for (int i = 0; i < n; i++) {
printf("%d", arr[i]);
if (i < n - 1) printf(" ");
}
printf("\n");
return 0;
}