整数の動的配列を読み取るこの関数の複雑さを誰かが知っていますか?次の入力のための十分なスペースがない場合、配列サイズを2倍にして、新しい大きな配列(メモリ内のアドレス)にコピーしますか?
どうすれば計算できますか?
void readDynamicArray(int* arr, int& physicalSize, int& logicalSize)
{
physicalSize=2;
arr= new int[physicalSize];
int tmpNum;
logicalSize=0;
cin>>tmpNum;
while (tmpNum!=-1)// stop sign is -1, will help know when to stop reading into the array
{
if (logicalSize==physicalSize)
{
arr=newArrLoc(arr, physicalSize, logicalSize);
}
arr[logicalSize]=tmpNum;
logicalSize++;
cin>>tmpNum;
}
}
int* newArrLoc(int* arr, int& physicalSize, int logicalSize)
{
int* newArr=new int[physicalSize*=2];
copyArray(newArr, arr, logicalSize);
delete[] arr;
return newArr;
}
void copyArray (int arr[],int srcArr[] ,int size)
{
int i;
for (i=0;i<size;i++)
{
arr[i]=srcArr[i];
}
}