Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
|
|
@ -0,0 +1,50 @@
|
|||
class CircleSort {
|
||||
function : Main(args : String[]) ~ Nil {
|
||||
circleSort([2, 14, 4, 6, 8, 1, 3, 5, 7, 11, 0, 13, 12, -1]);
|
||||
}
|
||||
|
||||
function : circleSort(arr : Int[]) ~ Nil {
|
||||
if(arr->Size() > 0) {
|
||||
do {
|
||||
arr->ToString()->PrintLine();
|
||||
}
|
||||
while(CircleSort(arr, 0, arr->Size() - 1, 0) <> 0);
|
||||
};
|
||||
}
|
||||
|
||||
function : CircleSort( arr : Int[], lo : Int, hi : Int, num_swaps : Int) ~ Int {
|
||||
if(lo = hi) {
|
||||
return num_swaps;
|
||||
};
|
||||
|
||||
|
||||
high := hi;
|
||||
low := lo;
|
||||
mid := (hi - lo) / 2;
|
||||
|
||||
while (lo < hi) {
|
||||
if(arr[lo] > arr[hi]) {
|
||||
Swap(arr, lo, hi);
|
||||
num_swaps++;
|
||||
};
|
||||
lo++;
|
||||
hi--;
|
||||
};
|
||||
|
||||
if(lo = hi & arr[lo] > arr[hi + 1]) {
|
||||
Swap(arr, lo, hi + 1);
|
||||
num_swaps++;
|
||||
};
|
||||
|
||||
num_swaps := CircleSort(arr, low, low + mid, num_swaps);
|
||||
num_swaps := CircleSort(arr, low + mid + 1, high, num_swaps);
|
||||
|
||||
return num_swaps;
|
||||
}
|
||||
|
||||
function : Swap(arr : Int[], idx1 : Int, idx2 : Int) ~ Nil {
|
||||
tmp := arr[idx1];
|
||||
arr[idx1] := arr[idx2];
|
||||
arr[idx2] := tmp;
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue