Case 061
Selection sort
selection_sort.eml sorts the sample list [64, 25, 12, 22, 11, 90, 34] into ascending order using selection sort: for each position, scan the remainder for the minimum and swap it into place once — a different strategy from [examples/bubble-sort/](../bubble-sort/)'s repeated adjacent-element swap.
ok: true — round-trip fixpoint reached (python1 == python2)updated 2026-07-23
EML
eml# Self-authored for the EML case corpus (no external origin). Selection sort
# over a fixed sample list: for each position, scans the remainder for the
# minimum and swaps it into place once — a different strategy from
# examples/bubble-sort/'s repeated adjacent-element swap. No `sorted()`/
# `.sort()` builtin, both interpreter-deferred.
numbers^+[64, 25, 12, 22, 11, 90, 34]
len(numbers) => n
for i in [0 : n - 2]:
i => min_index
for j in [i + 1 : n - 1]:
if numbers[j] < numbers[min_index]:
j => min_index
if min_index != i:
numbers[i] => temp
numbers[min_index] => numbers[i]
temp => numbers[min_index]
"Original: [64, 25, 12, 22, 11, 90, 34]" => msg1
msg1^0
"Sorted: " + str(numbers) => msg2
msg2^0Python (deterministic transpilation)
pythonnumbers = [64, 25, 12, 22, 11, 90, 34]
n = len(numbers)
for i in range(0, n - 2+1):
min_index = i
for j in range(i + 1, n):
if numbers[j] < numbers[min_index]:
min_index = j
if min_index != i:
temp = numbers[i]
numbers[i] = numbers[min_index]
numbers[min_index] = temp
msg1 = "Original: [64, 25, 12, 22, 11, 90, 34]"
print(msg1)
msg2 = "Sorted: " + str(numbers)
print(msg2)stdout (executed)
textOriginal: [64, 25, 12, 22, 11, 90, 34]
Sorted: [11, 12, 22, 25, 34, 64, 90]Trace event types
eml:run:starteml:assigneml:outputeml:run:done