Selection Sort

Medium Searching & Sorting
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;
}