陣列合併
題目:
有兩個排序的陣列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 問題描述 在乙個長度...