3、陣列的優勢和劣勢
陣列對應的英文是array,是有限個相同型別的變數所組成的有序集合, 陣列中的每乙個變數被稱為元素。
陣列是最為簡單、最為常用的資料結構。
陣列中的每乙個元素都有著自己的下標,下標從0開始,到陣列長度-1結束。
陣列的另乙個特點,是在記憶體中順序儲存 。
對於陣列來說,讀取元素是最簡單的操作。由於陣列在記憶體中順序儲存,所以只要給出乙個陣列下標,就可以讀取到對應的陣列元素。
如下**所示: (像這種根據下標讀取元素的方式叫作 「隨機讀取」 )
int
array =
newint
;// 輸出陣列中下標為2的元素
system.out.
println
(array[2]
);
要把陣列中某乙個元素的值替換為乙個新值,也是非常簡單的操作。直接利用陣列下標,就可以把新值賦給該元素。如下**所示:
int
array =
newint
;// 更新下標為3的元素
array[3]
=1;// 輸出陣列中下標為3的元素
system.out.
println
(array[3]
);
由於陣列的每乙個元素都有其固定下標,所以不得不首先把插入位置及後面的元素向後移動,騰出地方,再把要插 入的元素放到對應的陣列位置上。
刪除操作和插入操作的過程相反,刪除位置之後的元素都需要向前挪動1位。
如下**所示:
public
class
myarray
/** * 插入元素
** @param element 要插入的元素
* @param index 要插入的位置下標
*/public
void
insert
(int element,
int index)
throws exception
// 當陣列容量達到上限,需要對陣列進行擴容
if(size >= array.length)
// 迴圈將插入位置及之後的元素後移一位
for(
int i = size -
1; i >= index; i--
)// 新元素賦值給空出的插入位置
array[index]
= element;
// 陣列實際元素大小 +1
size++;}
/** * 刪除元素
** @param index 下標
*/public
void
delete
(int index)
// 迴圈將刪除位置的元素向前移一位
for(
int i = index; i < size -
1; i++
)// 陣列實際元素大小 -1
size--;}
/** * 陣列擴容
*/private
void
resize()
}
陣列擁有非常高效的隨機訪問能力,只要給出下標,就可以用常量時間找到對應元素。
至於陣列的劣勢,體現在插入和刪除元素方面。由於陣列元素連續緊密地儲存在記憶體中,插入、刪除元 素都會導致大量元素被迫移動,影響效率。
所以陣列所適合的是讀操作 多、寫操作少的場景。
資料結構之陣列
陣列的考點 1.二維陣列元素位址計算 三維陣列中元素個數的計算 選擇題 2.廣義表的基本概念 會求表尾 表頭,填空題 3.矩陣的壓縮儲存 壓縮儲存的目的 對稱矩陣壓縮儲存後的大小,填空題 針對考點,一一擊破。哈哈哈。第一部分 首先,二維陣列元素位址計算。注 只要知道以下三要素便可隨時求出任一元素的位...
資料結構之 陣列
陣列是線性表,就是資料排成像一條直線一樣的結構,除了陣列,鍊錶,佇列,棧都是線性結構 而非線性表就是二叉樹,堆,圖等,資料之間不是簡單的先後關係。陣列有連續的記憶體空間和相同型別的資料。正式有了這兩個限制,才有了乙個堪稱殺手鐗的特性 隨機訪問 但是刪除,插入乙個資料,為了保證連續性,就需要做大量的資...
資料結構之 陣列
陣列是由相同型別的元素的集合所組成的資料結構並且是分配一塊連續的記憶體來儲存。利用元素的索引 index 可以計算出該元素對應的儲存位址。一維陣列就是最簡單的陣列,就像 int data 二維陣列實質就是儲存的一維陣列,就像 int data 大於等於二維的陣列就叫多維陣列。需要初始化空間大小,並且...