全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1466
推到 Plurk!
推到 Facebook!

關於陣列問題

 
virex01
一般會員


發表:1
回覆:2
積分:0
註冊:2006-12-29

發送簡訊給我
#1 引用回覆 回覆 發表時間:2006-12-29 16:58:17 IP:61.221.xxx.xxx 訂閱
請問如何去比較兩個陣列裡面的數值
然後再把兩個陣列都有的數值放到第三個陣列
例如陣列1是{1,2,4,8,11,16}
陣列2是(1,2.3,8,12,16}
經過陣列1跟陣列2的比較
陣列3是{1,2,8,16}
請問這樣的程式要如何寫?
謝謝
Coffee
版主


發表:31
回覆:878
積分:561
註冊:2006-11-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2006-12-29 17:09:03 IP:220.130.xxx.xxx 訂閱
合併排序

你可以先Sort source,然後以其中一個當index,輪詢每個element,
去問第二個array最後已插入的位置的下一個element是否比它大,不是的話就插到第三個array的最後
是的話,就以第二個array為key,一直插入到比第一個array最後已插入的下一個elemnt
如此反覆到其中一個array結束之後,將另一個array剩下的element一次性的插入到第三個element

以你的例子來說,兩個陣列都已經自己排序完畢,那麼,以1的陣列為index,
取第一個元素1,跟2的第一個比較,發現2也是1,於是插入1這個元素到新陣列
然後把兩個陣列的第一個元素當成插入,再來取index的第二個元素2,也是一樣的狀況,
所以兩個陣列都已經插入到第二個元素,再來取index的第三個,是4,因為比第二個陣列的3大,所以插入第二個陣列的3,
然後以第二個陣列為index,取第四個元素8,比第一個陣列未插入的第一個元素4大(剛剛只有比較,沒有插入),
所以插入四,把index array換成第一個陣列,以此類推

如果你用linked list的話,就可以把其中一個當成destination,兩個sort完之後,直接將source插入就可以
------
不論是否我發的文,在能力範圍皆很樂意為大家回答問題。
為了補我的能力不足之處,以及讓答案可以被重複的使用,希望大家能儘量以公開的方式問問題。
在引述到我的文時自然會儘量替各位想辦法,謝謝大家!
virex01
一般會員


發表:1
回覆:2
積分:0
註冊:2006-12-29

發送簡訊給我
#3 引用回覆 回覆 發表時間:2006-12-29 18:13:32 IP:221.169.xxx.xxx 訂閱
感謝這位大大的解說
不過小弟是BCB的初學者
所以還是看不太懂
我提出我的題目好了
我輸入兩個數字
假設是A跟B好了
那我要這兩個數字的個別公因數
還有這兩個數字的所有公因數
那 第一個 A跟B 的個別公因數
求出來之後 分別把這兩個數字的公因數丟到陣列1跟2
並且用StringGrid秀出來
這小弟會寫了
現在小弟不懂的就是
如何去比較 把A跟B的所有公因數放到陣列3
小弟是有用過for迴圈去比較過
可以比較是沒錯 不過放到陣列3的時候
會發生一些事情
假如 陣列1是{1,2.4,8,11,16,0,0}
陣列2是{1,4,8,16,20,0,0}
那用for迴圈去比較陣列3就會變成{1,0,4,8,0,16,0,0}
那我不要陣列3中間有穿插0的數值
意思就是我希望陣列3是{1,4,8,16,0,0,0,0}
那請問該如何解決
謝謝

Coffee
版主


發表:31
回覆:878
積分:561
註冊:2006-11-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2006-12-29 22:29:14 IP:203.73.xxx.xxx 訂閱
A1 : {1,2,4,8,11,16}
A2 : (1,2.3,8,12,16}

假設以A1為key array,那麼從A1的第一個元素開始,拿A1跟A2的第一個元素比,發現兩者相同,
那麼將A1[0]插入A3,A1.InsertedInd=0,A2因為是重覆的不需要插入所以也跟著設A2.InsertedInd=0
A1[1]跟A2[1]又一樣,插入A1[1]到A3,A1.InsertedInd=1, A2.InsertedInd=1
A1[2]=4 > A2[2]=3,key array變成A2,插入A2[2]到A3,A2.InsertedInd=2
A2[3]=8 > A1[2]=4, (因為A1還未插入),key array = A1,插入A1[2],A1.InsertedInd=2
也就是輪到key array的array要從它自己尚未插入到A3的element開始walk through,並跟另一個array的InsertedInd 1比較
如果小就插入,大就是key array換人當,直到其中一個array結束,那麼另一個array的元素就可以直接接到A3最後面
不過,你的0應該是不需要的吧?
------
不論是否我發的文,在能力範圍皆很樂意為大家回答問題。
為了補我的能力不足之處,以及讓答案可以被重複的使用,希望大家能儘量以公開的方式問問題。
在引述到我的文時自然會儘量替各位想辦法,謝謝大家!
taihao
一般會員


發表:1
回覆:13
積分:2
註冊:2005-11-02

發送簡訊給我
#5 引用回覆 回覆 發表時間:2006-12-29 23:06:20 IP:61.221.xxx.xxx 訂閱
手癢 來亂一下,勿怪
我會將兩組集合(我不稱為陣列) 分別存到2個不同的 Table (如Database為SQL Server 放在 tempdb)
採用 Transact_SQL 存第3個 Table
Insert into ResuleTAB(T1.FD1) from Table1 T1,Table2 T2 where T1.FD1=T2.FD2
此方法適用在大量元素須比較時. 效率會更好.
Coffee
版主


發表:31
回覆:878
積分:561
註冊:2006-11-15

發送簡訊給我
#6 引用回覆 回覆 發表時間:2006-12-29 23:27:32 IP:203.73.xxx.xxx 訂閱
實際上還真有元件可以提供in-memory的SQL command..XD
------
不論是否我發的文,在能力範圍皆很樂意為大家回答問題。
為了補我的能力不足之處,以及讓答案可以被重複的使用,希望大家能儘量以公開的方式問問題。
在引述到我的文時自然會儘量替各位想辦法,謝謝大家!
暗黑破壞神
版主


發表:9
回覆:2301
積分:1627
註冊:2004-10-04

發送簡訊給我
#7 引用回覆 回覆 發表時間:2006-12-30 00:32:18 IP:220.131.xxx.xxx 訂閱
問題在他說的這句
> 意思就是我希望陣列3是{1,4,8,16,0,0,0,0}
0 要出現4次。
這不合你說的情況。
不知道是他誤打還是。。。。。。。。。
===================引 用 文 章===================
Insert into ResuleTAB(T1.FD1) from Table1 T1,Table2 T2 where T1.FD1=T2.FD2


virex01
一般會員


發表:1
回覆:2
積分:0
註冊:2006-12-29

發送簡訊給我
#8 引用回覆 回覆 發表時間:2006-12-30 03:03:54 IP:221.169.xxx.xxx 訂閱

===================引 用 文 章===================
問題在他說的這句
> 意思就是我希望陣列3是{1,4,8,16,0,0,0,0}
0 要出現4次。
這不合你說的情況。
不知道是他誤打還是。。。。。。。。。
===================引 用 文 章===================
Insert into ResuleTAB(T1.FD1) from Table1 T1,Table2 T2 where T1.FD1=T2.FD2

不是物打喔 大大
我是假設陣列1跟陣列2還有陣列3為[8];
例如 x[8] y[8] z[8]
所以 沒有被帶入整數的部分就會顯示0

Coffee
版主


發表:31
回覆:878
積分:561
註冊:2006-11-15

發送簡訊給我
#9 引用回覆 回覆 發表時間:2006-12-30 09:50:51 IP:203.73.xxx.xxx 訂閱
那還好啊..就是我說的方法,最後沒填滿的element全部補零就好了..
------
不論是否我發的文,在能力範圍皆很樂意為大家回答問題。
為了補我的能力不足之處,以及讓答案可以被重複的使用,希望大家能儘量以公開的方式問問題。
在引述到我的文時自然會儘量替各位想辦法,謝謝大家!
暗黑破壞神
版主


發表:9
回覆:2301
積分:1627
註冊:2004-10-04

發送簡訊給我
#10 引用回覆 回覆 發表時間:2006-12-30 10:42:05 IP:220.131.xxx.xxx 訂閱
題目條件就差這一點。
這才是你完整的題目
===================引 用 文 章===================
所以 沒有被帶入整數的部分就會顯示0
系統時間:2024-05-03 19:07:07
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!