/ tests / tests / execution / bubble_sort.adl
bubble_sort.adl
 1  /*
 2  seed = 123456789
 3  min_height = 16
 4  
 5  [case]
 6  program = "bubble_sort.alpha"
 7  function = "sort"
 8  input = ["[100u32, 0u32, 0u32, 2u32, 5u32, 200u32, 300u32, 10u32]"]
 9  [case]
10  program = "bubble_sort.alpha"
11  function = "sort"
12  input = ["[1u32, 2u32, 3u32, 4u32, 5u32, 6u32, 7u32, 8u32]"]
13  [case]
14  program = "bubble_sort.alpha"
15  function = "sort"
16  input = ["[8u32, 7u32, 6u32, 5u32, 4u32, 3u32, 2u32, 1u32]"]
17  */
18  
19  
20  program bubble_sort.alpha {
21      // This is largely to test array assignments.
22      transition sort(xs: [u32; 8]) -> public [u32; 8] {
23          for i: u8 in 0u8..7u8 {
24              for j: u8 in 0u8..7u8-i {
25                  if xs[j+1u8] < xs[j] {
26                      let swap: u32 = xs[j];
27                      xs[j] = xs[j+1u8];
28                      xs[j+1u8] = swap;
29                  }
30              }
31          }
32          return xs;
33      }
34  
35      @noupgrade
36      async constructor() {}
37  }