数据结构(一)-顺序存储结构的插入和删除:向指定位置的数组插入和删除元素

来源:互联网 发布:编程 开发 编辑:程序博客网 时间:2024/06/05 16:47

1.插入:

public static void main(String[] args) throws Exception {int[] arr = new int[] { 1, 2, 3, 4 };simulateInsert(arr, 2, 9);}private static void simulateInsert(int[] arr, int i, int j)throws Exception {int[] b = null;if (i > arr.length) {throw new Exception("越界");}if (i < 1 || i > arr.length - 1) {throw new Exception("不在范围内");}// 不在表尾if (i != arr.length - 1) {b = Arrays.copyOf(arr, arr.length + 1);// 递减的目的是先存储住之前的假如正着,会把之前的通通覆盖for (int k = b.length - 1; k >= i - 1; k--) {b[k] = b[k - 1];}b[i - 1] = j;}}

2.删除:

public static void main(String[] args) throws Exception {int[] arr = new int[] { 1, 2, 3, 4 };SimulateDelete(arr, 2);}/** * 删除数组指定位置的元素 *  * @param arr * @param i * @throws Exception */private static int[] SimulateDelete(int[] arr, int i) throws Exception {if (i > arr.length || i < 1) {throw new Exception("位置不对");}for (int k = i; k < arr.length; k++) {arr[k - 1] = arr[k];}return Arrays.copyOf(arr, arr.length - 1);}


顺序存储结构在查询的时候时间复杂度是O(1);固定的;而在插入或者是删除的时候是O(n),由此可知,数组或者顺序存储结构不太适合增删,适合查询操作




阅读全文
0 0