//把兩個無序表合成乙個有序表
//例如:把la和lb合成lc。
la:1,5,2,3,9
lb:6,8,4,7
lc:1,2,3,4,5,6,7,8,9
1.設兩個無序表為la和lb,因為順序表是無序的,而且順序表難以直接排序,所以我先把la和lb弄成陣列a和陣列b,因為陣列排序十分容易,可以直接採用內建的array.sort()方法直接排出來。
2.再把排好的陣列寫入另外兩個新順序表la2和lb2,這樣它們就是兩個有序表了。
3.合併利用迴圈來搞定:
(1)兩表都有值的情況下,將兩表的第乙個值相比較,將控制迴圈的變數i,j設為0;小的值插入lc並使該錶對應的變數自增。
(2)表la2元素用完,直接在表lc後插入lb2的全部元素。
(3)表lb2元素用完,直接在表lc後插入la2的全部元素。
4*.其實還有一種思路就是先把兩個無序表隨便合成乙個無序表,然後再轉成陣列,再重排序,再把陣列插入順序表中,這個思路可能更簡單一點,這裡就不再展示**了。
演算法的**如下(c#):
注:過程中用到了順序表的取值(gete)和插入(insert)方法,由於比較基礎,故在此不再給出。
public void
merge
(sqlist la,sqlist lb)
while
(j < lb2.length)
this.
insert
(k++
, lb2.elements[j++])
;while
(i < la2.length)
this.
insert
(k++
, la2.elements[i++])
;}
順序表的合併
順序表的合併 順序表的合併 include include define max 20 用typedef宣告新型別名sequencelist,代表乙個結構體型別,可用新型別名去定義變數 命名乙個新的型別名sequencelist來代表結構體型別 typedef struct sequencelist...
順序表合併
question 建立兩個非遞減順序表a,b,合併為乙個順序表但不建立新的順序表,相同資料不插入。比如 a 1 2 3 4 5 b 2 7 可把長度短的插入到長度長的順序表中,即a 1 2 3 4 5 7 實現 如下 include include define ok 1 define error ...
合併順序表
用順序表實現教材2.7.1節 42頁 的線性表合併 也可以參考課件 假設合併後的順序表的長度不會超出序表可能達到的最大長度。多組輸入。每組輸入資料由3行組成。第一行,輸入兩個整數a和b,分別代表順序表的長度。第二行和第三行,分別輸入a個和b個整數。詳見 和樣例輸入。見樣例輸出。每行最後乙個整數後有乙...