筆記 演算法複習筆記 陣列 集合 雜湊表(上)

2021-07-28 08:17:21 字數 1465 閱讀 3924

陣列是資料結構中最基礎的儲存方式之一,集合是陣列的延伸,雜湊表,又稱雜湊表(hash table),許多高階語言中都是在陣列的基礎上實現的,當然還有其他實現形式。

1、定長

陣列的的長度是固定的,陣列的長度在宣告時候已經確定,在使用的時候發現不夠用,只能重新宣告乙個陣列

2、按照順序訪問

在訪問陣列中某乙個元素的時候,只能從第乙個元素按照順序訪問,知道訪問到指定位置的元素。雖然在寫程式時候可以通過下標直接訪問指定位置的元素,但計算機實際上還是按照順序訪問的。

陣列的致命缺點就是長度固定,如果我們一開始不確定,就變得很麻煩了。有可能你會說,那就來個動態的唄,動態陣列,在c語言中有一種實現動態陣列的方式,就是用malloc函式動態開闢記憶體空間, 但在這裡我要說的是另一種方式,集合

什麼是集合?

我的理解就是長度可變的列表(動態陣列)

下面這些都是集合:

既然集合是長度可變的陣列,那麼我們就可以用陣列實現集合。

下面,用arraylist實現簡單的集合,也可以叫它變長陣列。

public

class

arraylist

public

arraylist(int initial)

array = new

int[initial_size];

}/**

* 新增乙個元素

*@param num

*/public

void

add(int num)

array[size++] = num;

}/**

* 獲取指定位置的元素值

*@param i

*/public

intget(int i)

return array[i];

}/**

* 設定指定位置的元素值

*@param i

*@param num

*@return 指定的這個位置 之前的值

*/public

intset(int i,int num)

/*** 獲取變長陣列的長度

*@return

*/public

intsize()

}

public

class arraylisttest

}

集合的特點,跟它的實現有關,那就是變長,變長是相對而言,內部還是通過陣列實現的,只是在不夠用的時候根據策略生成乙個更長的陣列,把舊陣列複製到新陣列裡。

在正常情況下,會有兩個系統開銷,乙個是陣列總是比我們實際使用的長度長,因此存在空間浪費,另乙個是陣列不夠長的時候,需要新建乙個更長的陣列,同時把舊陣列的資料複製到新陣列中,這個操作比較消耗系統的效能。

3.

筆記 演算法複習筆記 陣列 集合 雜湊表(下)

雜湊表是一種空間換時間的資料結構,在演算法中提公升效率的一種常用的方法。但是,正如其特點,有時候所消耗的空間,真讓人頭疼,用的時候在二者之間權衡。雜湊表,又叫雜湊表 hashtable 是能夠通過給定的關鍵字的值直接訪問到具體對應值的資料結構。也就是說,把關鍵字映到乙個表中的位置來直接訪問記錄,以加...

演算法筆記陣列

資料型別 陣列名 陣列大小 int a 5 初始化時第乙個元素賦值為0全為0 1 include2 intmain 5for int i 1 i 4 i 12 13 14for int i 0 i 5 i 1718 return 0 19 int a 5 6 中間的括號不能缺。陣列大小較大 大概10...

C複習筆記(陣列的使用)

c語言不允許對陣列大小做動態定義 c語言規定只能逐個引用陣列元素,不能一次引用整個陣列 即將陣列作為乙個整體來使用 c語言中,陣列的概念有點類似數學中的集合,陣列的初始化可以使用集合形式進行初始化 在陣列上實現迴圈佇列可以很好地解決斐波那契數列問題 c編譯器對陣列訪問越界沒有警報,這樣會增加程式設計...