summaryrefslogtreecommitdiff
path: root/tests/examplefiles/carbon/example.carbon
blob: 13b4a1a6218a21717bdf5ac84a54ba397a9e1a19 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package Sorting api;

fn Partition[T: !Comparable & Movable](s : Slice(T)) -> i64 {
   var i: i64 = -1;
   for (e: T in s) {
      ++i;
      Swap(&s[i], &e);
   }
   return i;
}

fn QuickSort[T: !Comparable & Movable](s : Slice(T)) {
   if (s.Size() <= 1) {
       return;
   }
   let p: i64 = Partition(s);
   QuickSort(s[:p - 1]);
   QuickSort(s[p + 1:]);
}