gpt4 book ai didi

c - 合并排序错误+警告

转载 作者:行者123 更新时间:2023-11-30 20:58:24 25 4
gpt4 key购买 nike

我有以下代码,按照教程进行操作,但它似乎没有做任何事情。我尝试用 KDB 调试它,但找不到它不排序的问题。

也许这里有人可以帮助我,提前致谢!

#include <stdio.h>
#include <stdlib.h>

void Mergesort(int *a, int length) {
int i = 0;
int mid = 0;
int *L, *R;
mid = length / 2;
if (length < 2)
return;
else {
L = (int*)malloc(sizeof(int) * mid);
R = (int*)malloc(sizeof(int) * (length - mid));
for (i = 0; i < mid; i++) {
L[i] = a[i];
}
for (i = mid; i < length; i++) {
R[i - mid] = a[i];
}
Mergesort(L, mid);
Mergesort(R, length - mid);
Merge(a, L, R, length);
}
}

void Merge(int *a, int *L, int *R, int length) {
int i = 0, j = 0, k = 0;
int mL, mR;
mL = length / 2;
mR = length - mL;

while (i < mL && j < mR) {
if (L[i] < R[j]) {
a[k] = L[i];
i++;
} else {
a[k] = R[j];
j++;
}
k++;
}
while (i < mL) {
a[k] = L[i];
i++;
k++;
}
while (j < mR) {
a[k] = R[j];
i++;
k++;
}
}

void main() {
int a[7] = { 5, 4, 99, 13, 34, 54, 2 };
int u = 0;
Mergesort(a, 7); // call to Mergesort

for (u = 0; u < 7; u++) {
printf(" %d\t", a[u]);
}
printf("\n\n\n");
}

我真的很感激,因为我需要在下周四之前理解它:P

最佳答案

此处您要递增 i,但您应该在 Merge 函数中递增 j

 while(j<mR)
{
a[k]=R[j];
j++;
k++;
}

编辑:

将函数声明放在头文件之后 void Merge(int *a,int *L,int *R,int length); 否则您将得到函数“Merge”的隐式声明警告。

#include<stdio.h>
#include<stdlib.h>
void Merge(int *a,int *L,int *R,int length);

//rest of your code

关于c - 合并排序错误+警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52855544/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com