我有一个程序,其中2个各种阵列充满了自行车。现在我想从这两个预设数组中制作1个排序数组。我可以直接想到Mergesort方法,但是如果你在终端上输入一些内容,我仍然知道如何应用它。但是,我不知道如何用2个先前创建的数组做到这一点。也许有人有想法?
该功能应为:
void merge_arrays(Bike* bikes1, int n1, Bike* bikes2, int n2, Bike* bout) {
//merge funktion
}
Bike * bikes1是第一批各种自行车和自行车*自行车2。在Bike * bout中,应输出已排序的数组。
除了信息:
在自行车中存储以下数据 凉爽,Wheelsize,齿轮,价格。
排序是根据第一个值,所以很酷。
这是我的实际功能
void merge_arrays(Bike* bikes1, int n1, Bike* bikes2, int n2, Bike* bout) {
//void merge(int a[], int m, int b[], int n, int sorted[]) {
int i, j, k;
j = k = 0;
for (i = 0; i < n1 + n2;) {
if (j < n1 && k < n2) {
if (bikes1 + j < bikes2 + k ) {
bout [i] = bikes1 [j];
j++;
}
else {
bout [i] = bikes2 [k];
k++;
}
i++;
}
else if (j == n1) {
for (; i < n1 + n2;) {
bout [i] = bikes2 [k];
k++;
i++;
}
}
else {
for (; i < n1 + n2;) {
bout [i] = bikes1 [j];
j++;
i++;
}
}
}
}
它返回数组但没有排序..
输出: