注:這是一個新的系列,主要是因爲數據結構與算法是程序員之後立身的根本,我之前在大學也學過,可是很快就忘記了,如今想把它撿起來,經過寫一個系列文章,加深本身的理解,其實我寫這個系列主要是想先經過預熱,而後去刷leetcode。刷算法自己是想鍛鍊本身寫程序的思惟,不想由於天天寫業務代碼,致使本身思惟僵化,此係列會與springboot系列同時更新,立個falg。
java
說明:git
數組
是一段擁有連續
的存儲相同類型
的結構,而且是一種線性結構
,由於是線性結構,因此數組中每個數據,都有前
和後
,可是注意,不包括開始數據(首)和末數據。隨機訪問
// 數組申請空間的長度 private int size = 0; // 數組實際長度 private int count; // 數組實際存儲 private int array[];
/** * 構造方法-初始化 * @param capacity 數組初始化長度 */ public MyArray(int capacity) { this.size = capacity; this.array = new int[capacity]; this.count = 0; }
// 使用構造方法,初始化空間大小 MyArray myArray = new MyArray(6);
55 44 33
,這樣,位置就空出來,切忌不能先移動33
,若是先移動 33
,則33
會直接覆蓋掉44
。代碼以下/** * 根據索引在指定位置插入數據 * @param index 索引 * @param value 帶插入的值 */ protected boolean myArrayInsert(int index,int value){ // 判斷數組是否還有空餘空間 if (count == size){ System.out.println("沒有可插入的空間"); return false; } // 判斷是否越界 if (index < 0 || index >= size){ System.out.println("數組越界異常"); return false; } // 循環,從插入的位置開始依次將數據向後移動,將index所指向的位置騰出來,方便插入新的數據 for (int i = count; i > index; i--) { array[i] = array[i-1]; } array[index] = value; count ++ ; System.out.println("插入成功"); return true; }
index
的位置,這樣就減小了數據的移動/** * 刪除指定位置的數 * @param index 索引 */ protected boolean myArrayDel(int index){ if (index < 0 || index >= count){ System.out.println("索引越界"); return false; } for (int i = index; i < count - 1; i++) { array[i] = array[i + 1]; } count --; System.out.println("刪除成功"); return true; }
/** * 數組查詢 * @param value 待查詢的值 * @return 返回該值對應的索引 */ protected int myArrayFind(int value){ for (int i = 0; i < count; i++) { if (array[i] == value){ System.out.println("查詢成功"); return i; } } System.out.println("查詢不成功,該數不存在"); return -1; }
/** * 修改替換指定位置的數據 * @param index 指定位置索引 * @param value 值 * @return 是否修改爲功 */ protected boolean myArrayModify(int index,int value){ if (index < 0 || index >= count){ System.out.println("索引越界"); return false; } array[index] = value; return true; }
/** * 數組打印 * */ protected void printAll(){ System.out.println("當前數組實際長度:" + count); System.out.println("申請的數組空間大小:" + size); for (int i = 0; i < count; i++) { System.out.println("位置:" + i + "----" + array[i]); } }
public static void main(String[] args) { MyArray myArray = new MyArray(6); myArray.myArrayInsert(0,0); myArray.myArrayInsert(1,1); myArray.myArrayInsert(2,2); myArray.myArrayInsert(3,3); myArray.myArrayInsert(4,4); myArray.myArrayInsert(5,5); // 新增 myArray.myArrayInsert(2,3); // 刪除 myArray.myArrayDel(0); // 查詢 int i = myArray.myArrayFind(4); System.out.println("對應的索引位置:" + i); // 修改 myArray.myArrayModify(1,9); myArray.printAll(); }
本系列代碼github地址:https://github.com/shanggushenlong/Data_Structures_and_Algorithms_Java程序員