本文以實踐為主,舉幾個基本的常用的例子。所以原始碼已上傳至github:鏈結
public int find(int index) 複製**
public boolean insert(int index, int value)
for (int i = count - 1; i > index; --i)
array[index] = value;
++count;
return
true;
}複製**
public
boolean
delete
(int index)
--count;
// 縮容
if (count == array.length / 4 && array.length / 2 != 0)
return
true;
}複製**
private boolean arrayexpansion(int capacity)
array = newarray;
return
true;
}複製**
public static void main(string args)
array.printall();
//擴容
array.insert(10, 10);
array.printall();
//縮容
for (int i = array.size; i > array.size/ 4; --i)
array.printall();
}複製**
將乙個長度為m的有序陣列array1和乙個長度為n的有序陣列array2合併為乙個有序陣列。
首先想到的方法是建立乙個長度為m+n的array3陣列,以此從array1和array2中取出元素進行比較,然後將較小的元素加入array3,然後在考慮array1陣列有剩餘和array2陣列有剩餘的兩種情況,最後在把新陣列的元素重新加入到array3陣列中即可。
但是這種思路會占用額外的空間。
具體實現如下:
public int merge1(int array1, int m, int array2, int n) else
} // 如果array1有剩餘
if (i != m)
} // 如果array2有剩餘
if (j != n)
} return array3;
}複製**
測試結果:
因為從前往後排序的話,會涉及到陣列元素多次移動,所以我們考慮從後往前進行排序,也就是末尾排序法。
public int merge2(int array1, int m, int array2, int n) else
} // 將n中剩餘的資料加入array1
while (n >= 0)
return array1;
}複製**
或者更精簡,乙個三元表示式搞定
public int mergeopt2(int array1, int m, int array2, int n)
return array1;
}複製**
您的點讚和關注是對我最大的支援,謝謝!
深入理解陣列指標與指標陣列的區別
陣列指標與指標陣列的區別在於 陣列指標p是乙個指標,而指標陣列p是乙個存放n個指標變數的陣列。一 陣列指標 int p n 重點 優先順序高 的優先順序是一樣的,但它們的方向是從左至右的,所以先執行括號裡的 p 首先說明p是乙個指標,指向乙個整型的一維陣列,這個一維陣列的長度是n,也可以說是p的步長...
C語言之簡單理解指標和深入理解陣列
1 陣列名是乙個指標 2 通過陣列名來訪問陣列 include intmain int size sizeof arr sizeof int 或者int size sizeof arr sizeof arr 0 3 陣列的傳參 一維陣列的傳參 include void sheena1 int arr...
深入理解資料庫鎖
oracle中分為兩種模式的鎖,一種是排他鎖 x鎖 另一種是共享所 s鎖 鎖是實現併發的主要手段,在資料庫中應用頻繁,但很多都由資料庫自動管理,當事務提交後會自動釋放鎖.oracle為了使資料庫實現高度併發訪問,它使用了不同型別的鎖來管理併發會話對資料物件的操作.oracle的鎖按作用物件不同分為如...