劍指offer 陣列合併

2021-07-30 17:18:33 字數 1315 閱讀 3740

陣列合併

題目:

有兩個排序的陣列a1和a2,內存在a1的末尾有足夠多的空餘空間容納a2。請實現乙個函式,把a2中的所有數字插入到a1中並且所有的數字是排序的。

程式設計思路:

設定兩個排好序的陣列array1和array2,將array2中的數字複製到array1.分別計算array1和array2陣列的實際長度,從後向前複製。開始使下標分別指向陣列末尾,然後從後向前比較,直到下標小於0.由此可得其中乙個陣列複製完畢,只需將另一陣列的剩餘部分複製到array1中即可。

#include void arraysort(int array1,int array2)

int i=0,j=0;

while(array1[i]!='\0')

int indexofarray1=0,indexofarray2=0,indexofnewarray1=0;

indexofarray1=i;

while(array2[j]!='\0')

indexofarray2=j;

indexofnewarray1=indexofarray1+indexofarray2;

while(indexofarray1>=0&&indexofarray2>=0)

else

}else if(array1[indexofarray1]array2[indexofarray2])

}if(indexofarray1<0) }

if(indexofarray2<0) }

}int main()

; int array2[5]=;

arraysort(array1,array2);

int h=0;

while(array1[h]!='\0')

return 0;

}

總結:

合併兩個陣列(包括字串)時,如果從前往後複製每個數字(或字元)需要重複移動數字(或字元)多次,那麼我們可以考慮從後往前複製,這樣就能減少移動的次數,從而提高效率。

劍指offer 陣列

資料是最簡單的資料結構,它佔據一塊連續的記憶體並按照順序儲存資料。建立陣列時,首先指點陣列的容量大小,然後根據大小分配記憶體。缺點 空間效率不高。經常有空閒的區域滅有得到充分利用。優點 時間效率很高。可以根據時間效率高的特點,來實現簡單的雜湊表 把陣列的下標設為雜湊表的鍵值,陣列中的每乙個數字設為雜...

劍指offer 陣列

public class 03 陣列中的重複數字 swap number,number i i return 1 交換 public void swap int number,int i,int j public class 03 陣列中的重複數字 return 1 public intfindre...

劍指offer 陣列

問題描述 在乙個二維陣列中 每個一維陣列的長度相同 每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。function find target,array return false 問題描述 在乙個長度...