結構上的演算法 陣列

2021-06-22 08:54:21 字數 575 閱讀 1265

陣列實際上是以數為索引,以某種結構為排列的一種結構,

通常要解決的問題即是查詢,排序,字串,各種數字類問題等

陣列問題優先要向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 陣列定義為一維陣列 二維...