class Vector {
private:
int size, length;
int *data, *temp;
void merge_sort(int l, int r) {
//如果l==r说明两个指针移动到了同一个元素上,此时return即可
if (l == r) {
return;
}
int mid = (l + r) / 2;
merge_sort(l, mid); //左边的处理
merge_sort(mid + 1, r); //右边的处理
int x = l;
int y = mid + 1; //设置两个指针,分别指向初始位置和中间位置
int loc = l;
while (x <= mid || y <= r) {
if (x <= mid && (y > r || data[x] <= data[y])) { //当一处表中的元素都插入完成时,把剩下的倒入
temp[loc] = data[x];
x++;
}
else {
temp[loc] = data[y];
y++;
}
loc++;
}
for (int i = l; i <= r; ++i) {
data[i] = temp[i]; //再把对应位置的元素放入
}
}