數據結構--數組

數組不是線性表。
數組的實現,核心是通過一個初始化的地址值、數組的長度、每個數組元素佔得字節數組成。【因此會發現java中的數組就給我們提供了獲取數組長度、得到某個數組元素值方法】
定位:用初始化的地址值與下標定位。【java數組本身的功能】

【以下是自定義的一些方法,也就是說幾乎所有的人都會這樣去實現數組的查找、插入、刪除操作;因此也就是說數組查找快,末尾插入快、但是中間插入慢,刪除中間元素慢】

查找:用的是遍歷數組的方式

插入:插入到最後。【實際上這裏的max纔是數組的真實長度,mArrayLength只是我們真是向數組中存入的數組元素時的長度】

刪除:用的是遍歷,會把後邊的元素依次向前挪動一個位置,同時mArrayLength減1

public class CustonArray {
	private int[] mArray;
	private int mArrayLength;// 實際長度

	public CustonArray(int max) {
		mArray = new int[max];
		mArrayLength = 0;
	}

	public int length() {
		return mArray.length;
	}

	public int get(int index) {
		return mArray[index];
	}

	public boolean find(int value) {
		for (int i = 0; i < mArrayLength; i++) {
			if (mArray[i] == value) {
				return true;
			}
		}
		System.out.println("未找到");// 這裏是一種算法規範,即每次都要有提示
		return false;
	}

	public void insert(int value) {
		mArray[mArrayLength] = value;
		mArrayLength++;
	}

	public void delete(int value) {
		int i;
		for (i = 0; i < mArrayLength; i++) {
			if (mArray[i] == value) {
				break;
			}
		}
		if (i == mArrayLength) {
			System.out.println("未找到");
			return;
		}
		mArrayLength--;
		for (; i < mArrayLength; i++) {
			mArray[i] = mArray[i + 1];
		}
	}
}



注意:
1、private int mArrayLength;這種情況下是實際上mArrayLength已經有默認值了爲0;
2、數組定義爲int mArray[10];實際上這個數組中的數組元素的值默認爲0;但是對於String mStringArray[10];這裏面數組元素值爲null
3、java中原有數組只給我們留得接口就是獲取長度方法;根據下標獲取對應的數組元素。

4、實際上java自帶的數組是原始的數組。而我們需要的數組類型,有序,無序;重複,不重複。操作:查找,更新,插入,刪除的基本操作。還有額外地遍歷,排序等操作。決定這些操作快慢的核心實際上和存儲、組織這些數據有巨大的關係。另外在過去對於一些獲取數據結構長度時,實際是在插入數據中添加了一步長度自增操作,分擔了一次性獲取長度的速度。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章