順序表的合併(C )

2021-09-05 10:15:28 字數 910 閱讀 9885

//把兩個無序表合成乙個有序表

//例如:把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個整數。詳見 和樣例輸入。見樣例輸出。每行最後乙個整數後有乙...