归并排序(Merge)

有序序列两两合并

稳定

空间复杂度O(n),时间复杂度O(nlogn)

int* B = (int*)malloc(sizeof(int) * n);

void sort(int num[], int low, int high) {

if (low < high) {

int mid = (low + high) / 2;

sort(num, low, mid);

sort(num, mid+1, high);

Merge(num, low, mid, high);

}

}

void Merge(int num[],int low,int mid,int high) {

int i, j, k;

for (k = low; low <= high; k++) {//复制

B[k] = num[k];

}

//i,j,k分别指向三个数组的元素

for (i = low, j = mid + 1,k=low; i < mid && j < high; k++) {

if (B[i] > B[j]) num[k] = B[j++];//

else num[k] = B[i++];//

}

while (i <= mid) num[k++] = B[i++];

while(j<=high) num[k++] = B[j++]

}

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-09 13:05
TMD找工作本来就烦,这东西什么素质啊😡
Beeee0927:hr是超雄了,不过也是有道理的
点赞 评论 收藏
分享
找到实习了&nbsp;给了150一天&nbsp;但是说是低代码&nbsp;值得去吗
码农索隆:是在没实习,可去,待个一两周,不行就润呗
点赞 评论 收藏
分享
水墨不写bug:疑似没有上过大学
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务