CH2 陣列類4 動態陣列 Array

2021-10-07 12:09:26 字數 1168 閱讀 9318

前兩篇本質上還是靜態陣列,靜態陣列容量是有限的。但有時我們無法預估將要使用的陣列有多大,太大太小都不好。解決方案:陣列容量是可伸縮的。本篇就是實現可伸縮的動態陣列

實現原理:

陣列增加/縮減:1 當發現不夠用或者過多時,開闢乙個newdata,容量是之前的data的兩倍/一半

2 將data原樣複製到newdata中

3 使data指向newdata

resize(newcapacity)

根據resize()傳入的引數值,可以變成兩倍或者0.5倍等等,所以可以進行擴容或者縮減容量

更改add方法,新增擴容功能

//在第index個位置新增乙個新元素

public

void

add(

int index, e e)

if(size == data.length)

//index之後的元素依次向後挪動,然後將e放到poz處,size增加1

//要被處理i的開始位置是index結束位置是size-1

for(

int i = size -

1; i >=index; i --

) data[index]

= e;

size ++;}

//實現擴容功能

public

void

resize

(int newcapacity)

data = newdata;

}

更改remove方法,新增縮減容量功能
//刪除索引為index的某個元素,並且返回該元素的值

//刪除索引為index的某個元素,並且返回該元素的值

public e remove (

int index)

//index之後的元素依次向前挪動,size減1

//要被處理i的開始位置是size-1結束位置是index

for(

int i = index; i < size -

1; i ++

) size --

; data[size]

= null;

if(size == data.length /2)

return ret;

}

CH2 陣列類5 簡單的複雜度分析

簡單的時間複雜度分析 o 1 o n o lgn o nlogn o n 2 o讀大歐 o 大o描述的是演算法的執行時間和輸入資料之間的關係 n 元素個數 o 是乙個漸進時間複雜度,描述n趨近於無窮的情況下演算法的快慢 o n 代表演算法的執行時間和輸入資料n的個數是呈線性關係的,是乙個線性的演算法...

動態陣列類 例

定義一元素為整數的動態陣列類,並在主函式中呼叫各個功能 資料成員 指向元素首位址的指標 用於儲存動態申請的陣列空間 當前陣列的容量 當前元素的個數 成員函式 帶參 無參建構函式 無參的動態申請10個元素空間並改變當前陣列的容量 當前元素的個數值 帶參的按引數處理 在尾部增加一元素 修改指定位置上的元...

動態陣列 allocator 類

12.2 動態陣列 12.2.1 new 和陣列 1.分配乙個動態陣列即是在分配乙個new物件時在型別名之後加一對方括號,用來存放陣列大小,該數可以是任意表示式 也可以是0,只需是整形 無需是常量。陣列分配成功後返回乙個指向第乙個物件的指標。2.該分配的動態陣列並非是陣列型別,也就不能呼叫陣列的be...