1樓:風若遠去何人留
合併陣列的操作,具體演算法依賴於合併的規則。
其通用流程如下:
1 建立一個足夠容納兩個陣列所有元素的目標陣列。如果規則規定將一個陣列合併到另一個之中,那麼需要保證目標陣列有可以容納兩個陣列的空間,否則會出現越界。
2 遍歷其中一個陣列,並賦值到目標陣列中。如果是一個陣列合併到另一個,那麼此步可以省略;
3 遍歷另一個陣列,按照規則插入到目標陣列中。
在不同規則下,合併演算法會有差異,如將長為lb的b陣列附加到長為la的a陣列結尾的操作,可以寫作
int i;
for(i = 0; i < lb; i ++)
a[la+i]=b[i];
而將長度均為l的陣列a,b,交替合併到c中,可以寫作
int i;
for(i = 0; i < l; i ++)
不管是何種方式,合併的本質就是,把a和b的每個元素,賦值到目標陣列的對應位置上即可。
怎麼用c語言將兩個陣列並起來?
2樓:水宮御子
看**,寫了幾種陣列的合併:
#include
#include
#include
void character()
;char c2=;
int k=0;
char new_c[100];
for(int i=0;i
執行截圖:
3樓:匿名使用者
#include
int main()
int a[10],b[10],c[20],i,j,m,n,t;
scanf("%d",&m);
for(i=0;iscanf("%d",&a[i]);
scanf("%d",&n);
for(i=0;iscanf("%d",&b[i]);
for(i=0;ic[i]=a[i];
for(i=m;ic[i]=b[i-m];
for(i=0;ifor(j=0;jif(c[j]t=c[j];
c[j]=c[j+1];
c[j+1]=t;
for(i=0;iprintf("%d ",c[i]);
4樓:
就是用一個為l1+l2的陣列,1-l1存a1,l1+1~l1+l2存a2.
5樓:匿名使用者
int main()
如何用c語言程式設計將兩個有序陣列a,b合併成一個陣列c
6樓:閃閃的紅星
就以你的例子來寫,可適當修改為更普遍的
演算法核心**為:
int i = j = k = 0;
//迴圈比較,將小的插入到c陣列中
while ( i < 3 && j < 3)//處理其中一個陣列剩下
while (i < 3) c[k++] = a[i++];
while( j < 3) c[k++] = b[j++];
或許有更好的實現,你自己在想想吧!
7樓:匿名使用者
#include
int main()
,b=;
l1=sizeof(a)/(int);
l2=sizeof(b)/(int);
for(i=0,i for(i=0,i for(i=0,i<(l1+l2);i++)}整形陣列大小:sizeof(陣列名)/sizeof(陣列型別)。 8樓:夜禮服假面 基本思想: 1)先在a、b陣列中各取第一個元素進行比較,將小的元素放入c陣列; 2)取小的元素所在陣列的下一個元素與另一陣列中上次比較後較大的元素比較,重複上述比較過程,直到某個陣列被先排完; 3)將另一個陣列剩餘元素抄入c陣列,合併排序完成。 #include void main() else ic++; }while(ia<10) while(ib<10) for(i=0;i<20;i++)} 如何用c語言程式設計將兩個有序陣列a,b合併成陣列c? 9樓:夜禮服假面 基本思想: 1)先在a、b陣列中各取第一個元素進行比較,將小的元素放入c陣列; 2)取小的元素所在陣列的下一個元素與另一陣列中上次比較後較大的元素比較,重複上述比較過程,直到某個陣列被先排完; 3)將另一個陣列剩餘元素抄入c陣列,合併排序完成。 #include void main() else ic++; }while(ia<10) while(ib<10) for(i=0;i<20;i++)} 方法一 查詢一個陣列裡面最小和次小的兩個元素,可採用先按從小到大排序,然後,取出前兩位數,得到最小和次小。但這種方法時間複雜度較高。方法二 先假定陣列的前兩位中的較小的是最小,較大的是次小迴圈檢查其餘的元素,若新元素小於最小,則,最小變為次小,新元素成為最小否則,再判斷新元素是否小於次小,是,則新元... 實際上就這麼寫的話,沒有區別,只是第二種更加清楚,也更加容易方便閱讀和修改 如果 為 for 第一種和第二種就是不同的了,因此建議用第二種的風格 for for 第一個for 的迴圈體只有一個語句 for 花括號括著,內中可以這個語句組,即許有多個語句,分號分開,也可以是空語句 當花括號中只寫了一個... 你的問題不復光是初始化的制問題 int i for i 0 i 3 i 主要出現在這 for i 0 i 3 i 你的baifor迴圈後面接了du一個分號,這樣整個zhifor就變成了空迴圈 而printf 4d a i 只執行了a 3 的輸dao出 因為空迴圈中把i加到了3 但你的陣列只有a 0 ...C或C求兩個陣列相同元素個數
C語言兩個for迴圈,c語言中兩個for語句的是怎樣迴圈的
C語言陣列int a 31是這個陣列的數都是1對嗎