合併有序陣列問題

2021-06-18 10:35:53 字數 790 閱讀 4010

有這樣乙個問題,現在有兩個有序的陣列,第乙個陣列的空間足夠容納兩個有序陣列中的數,利用高效的方法把兩個陣列合併,並使得陣列是有序的,且最後得到的是第乙個陣列,同時不借助其他額外的儲存空間。

其實這種題的解法幾乎都是一樣的,都是從最後乙個數開始,這就是取極值的思想,因為陣列是有序的,所以,每個陣列中最大的那個數一定在陣列的末尾。

這裡,先貼出**,之後再講解原理:

#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...