陣列是一種常用的資料結構,陣列具有不可變性,建立後的陣列的長度固定,通過索引訪問陣列中的元素,訪問速度快,刪除新增效率低。
通過物件導向模擬陣列,模擬的陣列具有以下功能:
新增新元素
展示查詢元素所在位置
根據索引獲取元素
根據索引刪除元素
修改指定位置的元素
同時使用兩個演算法對陣列進行操作:
有序新增元素
二分查詢法
資料如何儲存呢?在類中新增乙個陣列型別的私有屬性用來儲存資料,同時新增乙個變數儲存有效資料的長度(也就是元素的個數)
建立陣列的時候需要指定陣列的長度,所以要新增兩個構造方法:
1.無參構造方法設定陣列預設長度
2.有參構造方法指定陣列長度
public class myarray
public myarray(int maxsize)
}
elements 屬性的預設值是 0,第一次向物件中新增元素也是新增到索引為0 的元素中,新增後將 elements 的長度加1,就能一直向陣列中新增元素了,新增元素的個數取決於 arr 的長度。
public void insert(long value)
簡單的展示陣列中的元素即可,使用 for 迴圈遍歷
public void display()
system.out.println("]");
}
思路:使用迴圈遍歷陣列 arr ,將要查詢的資料和 arr 中每個元素進行比較。如果相等,則跳出迴圈。迴圈結束後,如果迴圈次數等於元素個數說明沒有找到資料,返回-1。否則返回迴圈次數(即找到的索引)。
public int search(long value)
} //遍歷到末尾說明沒有找到
if (i==elements) else
}
思路:這相對比較簡單了,直接給 arr 索引就能獲取到元素。但是要注意傳入的索引必須可用,不能用的索引可以丟擲異常。
public long get(int index) else
}
思路:和獲取元素時一樣,先檢查索引是否可用。如果可用,就從要刪除元素的位置開始向後遍歷,每次都將下乙個元素的值賦值給當前元素。也就相當於要刪除的元素被下乙個元素覆蓋,下乙個元素被下下乙個元素覆蓋,以此類推。元素移動完成後,將可用元素長度 elements 減1。
public void delete(int index) else else
}
public class myarray
public myarray(int maxsize)
/*** 新增資料
* @param value
*/public void insert(long value)
/*** 顯示資料
*/public void display()
system.out.println("]");
} /**
* 查詢資料
*/public int search(long value)
} //遍歷到末尾說明沒有找到
if (i==elements) else
} /**
* 查詢資料,根據索引來查
*/public long get(int index) else
} /**
* 刪除資料
*/public void delete(int index) else else
}}
思路:修改 insert 方法,遍歷 arr 陣列,如果當前元素大於新增的資料,當前的位置就要存入的位置。從最後乙個元素開始,逐個將元素向後位移,空出要存入的位置。存入要新增的元素後,將有效資料長度加1。
public void insert(long value)
} for (int j = elements; j > i; j--)
arr[i]=value;
elements++;
}
思路:資料必須是有序的,才能使用二分查詢法!可以結合有序新增元素一塊使用,這裡的序列是公升序(從小到大)。二分查詢是每次和一組數中間的數進行比較,如果大於就再和右邊的數最中間的數比較,如果小於就和左邊的數最中間的數比較。直到中間的數和要查詢的數相等,否則就是沒有這個數。
public int binarysearch(long value) else if(low>high) else else
} }}
LRU management(模擬資料結構)
lru,作業系統中的最近最常使用演算法 include define maxn 1000005 define ll long long using namespace std struct nodecash maxn 1 模擬鍊錶 表示儲存單元 unordered mapft 雜湊表對映 把位址規模...
演算法 模擬資料結構一
普通佇列 int q 10000 h 0,tt 1 新增乙個元素a q tt a 刪除末尾元素tt 刪除隊頭元素h 輸出while tt h 普通棧 int stock 100005 t 1 新增乙個元素a stock t a 刪除t 單鏈表 優點方便,缺點訪問前乙個元素需要重新訪問一遍 這種方法本...
2020 7 4模擬 資料結構 ds
wobmaj 有 n 個資料結構,第 i 個資料結構具有工業指數 a i 和包容指數 b i b i le a i 他會不斷執行下面這個操作,直到無法再執行為止 選擇二元組 i,j 將第 i 個資料結構套進第 j 個資料結構裡,其中 a i。每個資料結構只能巢狀和被巢狀一次。求可能出現的不同局面的數...