void merget(int *a, int length, int *b, int lengthB) {
if (a == nil || b == nil || length <=0 || lengthB <=0) return;
int originalOfLengthA = 0;
int i = 0;
while (a[i] != 0) {
originalOfLengthA ++;
i ++;
}
//空间不够
if (originalOfLengthA + lengthB > length) {
return;
}
int indexOfNew = originalOfLengthA + lengthB - 1;
int indexOfOriginalA = originalOfLengthA - 1;
int indexOfOriginalB = lengthB - 1;
while (indexOfOriginalA >=0 && indexOfOriginalB >=0) {
if (a[indexOfOriginalA] > b[indexOfOriginalB]) {
a[indexOfNew] = a[indexOfOriginalA--];
} else {
a[indexOfNew] = b[indexOfOriginalB--];
}
indexOfNew--;
}
while (indexOfOriginalA >=0) {
a[indexOfNew--] = a[indexOfOriginalA--];
}
while (indexOfOriginalB >=0) {
a[indexOfNew--] = b[indexOfOriginalB--];
}
for (int i = 0; i < length; i ++) {
NSLog(@"%d", a[i]);
}
}
int main(int argc, const char * argv[]) {
@autoreleasepool {
int a[] = {1,3,5,7,9,11,0,0,0,0,0,0,0,0,0};
int b[] = {1,2,4,6,8};
merget(a, 15, b, 5);
}
return 0;
}
网友评论