class Sort {
constructor(array) {
this.array = array
this.leftArr = []
this.sort(0, array.length)
}
sort(begin, end) {
if (end - begin < 2) return;
let mid = (begin + end) >> 1
this.sort(begin, mid)
this.sort(mid, end)
this.merge(begin,mid,end)
}
merge(begin, mid, end) {
let li = 0,le = mid - begin,ri = mid, re = end;
let ai = begin;
for (let i = li; i < le; i++) {
this.leftArr[i] = this.array[begin + i]
}
while(li < le) {
if (ri < re && this.array[ri] < this.leftArr[li]) {
this.array[ai++] = this.array[ri++]
} else {
this.array[ai++] = this.leftArr[li++]
}
}
}
}