52 lines
706 B
Plaintext
52 lines
706 B
Plaintext
//Merge Sort
|
|
|
|
struct Point {
|
|
x:i8;
|
|
y:i8;
|
|
}
|
|
// Struct
|
|
|
|
/*
|
|
ababa
|
|
*/
|
|
[Point:105] tmp;
|
|
|
|
fn MergeSort([Point:20] v,i8 l,i8 r) -> {
|
|
if l>r {
|
|
return ;
|
|
}
|
|
var mid = l + r >>1;
|
|
MergeSort(v,l,mid);
|
|
MergeSort(v,mid+1,r);
|
|
i8 i=l,j=mid+1,k=l;
|
|
for ;i <= mid && j <= r;k+=1 {
|
|
if v[l] < v[r]
|
|
{
|
|
tmp[k] = v[l];
|
|
l +=1;
|
|
}
|
|
else{
|
|
tmp[k] = v[r];
|
|
r += 1;
|
|
}
|
|
}
|
|
for ; i<=mid; {
|
|
tmp[k] = tmp[i];
|
|
k += 1,i+=1;
|
|
}
|
|
for ; j <=r ; {
|
|
tmp[k] = tmp[j];
|
|
k +=1 , j += 1;
|
|
}
|
|
|
|
}
|
|
fn main()->i8{
|
|
[Point:20] d;
|
|
[Point] d;
|
|
|
|
for i8 i = 0;i< 20; i++ {
|
|
d[i] = {x:i * i,y:i};
|
|
}
|
|
MergeSort(d,d+20);
|
|
0
|
|
} |