归并排序(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++]

}

全部评论

相关推荐

本人脑瘫,肢体肌张力高,就是活动略显僵硬。问过学校请来的做简历修改的,说是最好写上,但看网上好多人说不要写,想求助一下牛友们的建议,谢谢。
博无边界:同学你好,我是博世中国校招的同事,感谢向宇的推荐与介绍。最近我会安排招聘的同事与你联系,你可以私信发我你的联系方式,希望你对求职不要失去信心,我们目前也有着同事与你有类似情况,他们依然在自己的职业生涯中快速发展😊相信和博世一样 有着大量的坚持公平多元,肩负社会责任的企业
点赞 评论 收藏
分享
阿里淘天内蓷:虽然很想感谢你的分享,但是此刻的嫉妒和酸气已经涌上心头,所以我撤销一下对你的感谢吧,希望你能原谅我
点赞 评论 收藏
分享
点赞 1 评论
分享
牛客网
牛客企业服务