深入理解陣列 下

2021-09-24 08:38:45 字數 1857 閱讀 4978

本文以實踐為主,舉幾個基本的常用的例子。所以原始碼已上傳至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的鎖按作用物件不同分為如...