陣列實際上是以數為索引,以某種結構為排列的一種結構,
通常要解決的問題即是查詢,排序,字串,各種數字類問題等
陣列問題優先要向o(n),然後是o(logn)考慮
通用型演算法有:
基於o(n)的partition演算法(每5個作插入,所有中間值作傳統partition演算法的select中位數演算法)
基於o(n)的掃瞄演算法
基於o(logn)的二分演算法
基於o(n*n)的雙層掃瞄演算法
常見的問題有:
陣列中出現次數超過一半的數字
求連續子陣列的最大和(及起始位置)
奇偶站隊
替換空格(用多於一位的字元替換一位的字元,從後向前掃瞄)
迴圈移位
尋找最大的k個數
尋找陣列中的最大和最小值(最優化演算法1.5n)
快速尋找滿足條件的兩個數
子陣列的最大積
陣列中統計字元出現次數,變形問題(hash計數)
陣列中的逆序對(基於歸併排序的解法)
數字在排序陣列中出現的次數(二分查詢的變形)
長度未知數組的查詢問題(用搜尋空間逐漸加倍的類二分查詢)
資料結構與演算法 陣列
陣列是一種線性表資料結構。它用一組連續的記憶體空間,來儲存一組具有相同型別的資料。其中有幾個重要的概念 非線性表 連續的記憶體空間 儲存相同型別的資料 如圖所示,這是乙個長度為5的int陣列arr,我們假設起始的記憶體位址為1000,那麼第乙個元素的記憶體位址範圍就是 1000 1003,這是因為乙...
資料結構與演算法 陣列
題型1 如何用遞迴實現陣列求和 方法1 題型2 如何用乙個for迴圈列印乙個二維陣列 方法1 array在二維陣列中的行號和列號分別為 i maxy i maxy 題型3 用遞迴和非遞迴的方法實現二分查詢 題型4 如何在排序陣列中,找出給定數字出現的次數 方法1 二分查詢,分別找出左邊界和右邊界,左...
資料結構與演算法 陣列
陣列是由相同型別的元素 element 的集合所組成的資料結構,分配一塊連續的記憶體來儲存。利用元素的索引 index 可以計算出該元素對應的儲存位址。維基百科 陣列是線性表資料結構,定義陣列時,系統會分配乙份連續的記憶體空間來儲存一組相同的型別的資料,如int num n 陣列定義為一維陣列 二維...