有這樣乙個問題,現在有兩個有序的陣列,第乙個陣列的空間足夠容納兩個有序陣列中的數,利用高效的方法把兩個陣列合併,並使得陣列是有序的,且最後得到的是第乙個陣列,同時不借助其他額外的儲存空間。
其實這種題的解法幾乎都是一樣的,都是從最後乙個數開始,這就是取極值的思想,因為陣列是有序的,所以,每個陣列中最大的那個數一定在陣列的末尾。
這裡,先貼出**,之後再講解原理:
#include void insert(int *array1, int len1, int *array2, int len2);
int main(int argc, char **argv)
; int array2[8] = ;
int i = 0;
insert(array1, 7, array2, 8);
for(i = 0; i < 15; i++)
printf("\n");
}void insert(int *array1, int len1, int *array2, int len2)
else
}while (array2_pos >= 0)
return;
}
從**中可以看出,首先在大的陣列中找到合併後陣列最後乙個數字的位置,之後依次比較兩個陣列中尾部的值,並根據大小放入不同的位置,最後,直到乙個陣列的指標指向了負值則結束,這個演算法的時間複雜度是 o(m + n)
合併有序陣列
時限 1000ms 記憶體限制 10000k 總時限 3000ms 描述 給你兩個有序且公升序的陣列,請你把它們合成乙個公升序陣列並輸出 give you two ordered ascending array,you put them into one ascending array and ou...
合併有序陣列
描述 給你兩個有序整數陣列 nums1 和 nums2,請你將 nums2 合併到 nums1 中,使 num1 成為乙個有序陣列。說明 初始化 nums1 和 nums2 的元素數量分別為 m 和 n 你可以假設 nums1 有足夠的空間 空間大小大於或等於 m n 來儲存 nums2 中的元素。...
合併有序陣列
給你兩個有序整數陣列 nums1 和 nums2,請你將 nums2 合併到 nums1 中,使 nums1 成為乙個有序陣列。說明 初始化 nums1 和 nums2 的元素數量分別為 m 和 n 你可以假設 nums1 有足夠的空間 空間大小大於或等於 m n 來儲存 nums2 中的元素。vo...