求兩個有序數列的合併 分治演算法

2022-08-02 06:06:07 字數 753 閱讀 8234

用分治演算法來求乙個陣列的排序

分治演算法:例如:將兩個陣列a[100]=。這個陣列排序

先將這個陣列分為均兩部分得到,。

再將分為兩部分,。

再分為,。

這時乙個數就不用排序了,直接輸出自己。

簡單問題,就可以用二分或者三分來算。

上**:

#include using

namespace

std;

void hebing(int a,int b,int mid,int

c)

else

}while(i<=mid)

while(j<=c)

for(int i=b,u=0;i<=c;i++,u++)

delete k;

} // 這個hebing函式的具體**。

void paixu(int a,int b,int

c)  //b表示起始位置,c表示終止位置。

intmain()

paixu(a,

0,n-1

);

for(int i=0;i)

cout

return0;

}

這個**的執行時間要比sort函式用的時間短。

合併兩個有序陣列

例如 陣列a1 陣列a2 則合併為a3 思路 依次掃瞄a1和a2的元素 比較當前元素的值,將較小的元素賦給a3,直到乙個陣列掃瞄完畢,然後將另乙個陣列的剩餘元素賦給a3即可。陣列a3的容量需要容納a1和a2兩個陣列和長度和。實現 include include void merge int a1,i...

合併兩個有序陣列

給定兩個有序整數陣列 nums1 和 nums2,將 nums2 合併到 nums1 中,使得 num1 成為乙個有序陣列。說明 示例 輸入 nums1 1,2,3,0,0,0 m 3 nums2 2,5,6 n 3 輸出 1,2,2,3,5,6 class solution def merge s...

合併兩個有序陣列

題目描述 給定兩個有序整數陣列 nums1 和 nums2,將 nums2 合併到 nums1 中,使得 num1 成為乙個有序陣列。說明 初始化 nums1 和 nums2 的元素數量分別為 m 和 n。你可以假設 nums1 有足夠的空間 空間大小大於或等於 m n 來儲存 nums2 中的元素...