陣列:使用陣列儲存item意味著所有item在記憶體中都是相連的。在陣列中儲存新的item可能很麻煩,because if 沒有了新空間,就得移動到記憶體的其他地方,因此新增新元素會很慢。陣列刪除元素也很麻煩,刪除元素後,必須將後面的元素前移。
結決辦法1 :預留空間。
缺點:1、額外請求的位置可能用不上。這將會浪費記憶體。【佔著**不拉*】相信你能猜測到啥意思 xixi
2、if 預留空間還不夠,還是得轉移。
結決辦法2 :使用鍊錶
鍊錶:鍊錶中的元素可儲存在記憶體中的任何地方。鍊錶中的每個元素都儲存了下乙個元素的位址,從而使一系列隨機記憶體位址串在一起。 使用鍊錶新增元素很容易,只需將其放入記憶體,並將位址儲存到前乙個元素中就ok了,注意:使用鍊錶不需要移動元素。刪除操作:鍊錶也是更好的選擇,because 刪除元素只需修改前乙個元素指向的位址即可。
總結:陣列讀取的執行時間 o(1) 插入o(n) 刪除 o(n)
鍊錶讀取的執行時間 o(n) 插入o(1) 刪除 o(1)
注意下哈。。。 再同乙個陣列中,所有元素的型別都必須相同(都為int 、double等) 弊端 引出集合
下面展示一些內聯**片
。
public int sort(int sourcearray)
}// 將找到的最小值和i位置所在的值進行交換
if (i != min)
}return arr;
}
演算法基礎 陣列 鍊錶 選擇排序
1 說說記憶體的工作原理?1 記憶體 就像很多抽屜的集合體,每個抽屜都有位址,fe0ffeeb是乙個記憶體單元的位址 2 將資料儲存到記憶體時,請求計算機提供空間,計算機給你乙個儲存位址。需要儲存多項資料時,有兩種儲存方式 陣列 鍊錶。2 說說陣列的原理?4個人去看電影,以陣列的形式將4個人儲存在座...
氣泡排序 陣列 鍊錶
對一組資料排序,例如 5 2 3 1 4 int flag 0,temp int s 10 定義陣列並賦值 for int i 0 i 10 i if flag 0 break 上述 外層迴圈控制迴圈的次數,最壞的情況下迴圈10次排序完成 內層迴圈控制比較個數 flag用來判斷是否發生交換,如果沒發...
演算法2 鍊錶,陣列,和選擇排序
計算機的記憶體就像是我們平時存放東西的儲物櫃一樣,我們把揹包之類的物品放入櫃子裡,每個櫃子有乙個專屬的編號,我們記住這個編號,然後根據編號就可以找到櫃子拿回屬於我們的物體。在計算機裡,就有很多這種櫃子,叫記憶體單元,每個櫃子的編號就是位址。那麼如何將資料存放到相應的位址內呢,有兩種基本方式,鍊錶和陣...