ディレクトリ
配列の作成と使用
- 1次元配列を作成します。
- INT ARR []; ARR =新しいINT [10];最初の文、及び、新しいメモリを割り当てます
- INT [] ARR =新しいINT [ 10]; 直接メモリ宣言割り当てます
- int型ARR []; ARR =新しいINT [] {1、2、3};初期化
- INT [] ARR = {1、2、3}。
- 2次元配列を作成します。
- ARR =新しいINT [2] [3]; [] [] ARR INT最初の文を、それが割り当てられています
- INT [] [] ARR =新しいINT [2] [3]、メモリ直接宣言割り当てます
- INT [] [] ARR =新しいINT [2] []; ARR [0] =新しいINT [2]; ARR [1] =新しいINT [3];各次元に対して別々にメモリを割り当てます
- INT [] [] ARR = {{1,2}、{3,4}};初期化
アレイの基本操作
-
長さの配列を取得
- arr.length;配列プロパティ長
- フィル配列要素を交換してください
- Arrays.fill(INT [] A、INT値)の値を持つすべての配列値を満たします
- Arrays.fill(INT [] A、INTたfromIndex、INTたtoIndex、int値);たtoIndex含まずたfromIndex、を含む充填された指定されたインデックス値の範囲、
- 範囲外のインデックスは、異常報告されます。
- シーケンス
- Arrays.sort(ARR);昇順
- 配列のコピー
- Arrays.copyOf(ARR、INT newlength)は、配列をコピーし、新しい配列の長さを指定します
- Arrays.copyOfRange(ARR、INTたfromIndex、INTたtoIndex);新しい配列にコピー配列の指定範囲を、toIndexのは、ARRの長さよりも大きくすることができます
- arr.clone();クローン配列
- クエリの列
- Arrays.binarySearchは(オブジェクト、オブジェクトキー);配列内のルックアップキー位置、インデックスを返すが存在し、ノーリターン挿入ポイントが存在しない、ルックアップ場合、最初の鍵となる要素は、{4、25、10}負のインデックスよりも大きい戻り8負の指数10が返され、{4、8、10、10、25}のインデックスは2であり、戻り-2
- Arrays.binarySearch(オブジェクト、int型fromIndexの、int型toIndexの、オブジェクトキー)。
- 戻り値が見つからなかった場合は、必ず戻り値がより大きくを発見または0に等しくなることを確実にするために、挿入ポイントの負のインデックスを返します
- 範囲外のインデックスは、異常報告されます。
配列ソートアルゴリズム
- バブルソート
- 隣接する要素、及びスワップの比較。
- lenが配列の長さであり、lenの1倍からアウターループ制御ホイールの数、インナーループコントロール新しいものに一方から最後の要素のそれぞれのインデックス。1ラウンドの数、少なくとも1つの内部ループの最大インデックスを増加させます。
- ダイレクト選択ソート
- 直接比較、交換なし、唯一のインデックスレコードとは、最大値を見つけるたびに交換しました。
- サイクル同様のバブルソート、より多くの更新最小値または最大値のインデックス、内側のループの終了後の直接の新ラウンドの最後のインデックスの最小または最大交換価値、最後のインデックス最小値または最大値のため。
- 並べ替えをリバース
package ex6_array;
public class ex6_20_Sort {
int cmpNum = 0;
int chgNum = 0;
public static void main(String[] args) {
int[] arrOri = {63, 4, 24, 1, 3, 15};
int[] arr = arrOri.clone();
int[] arr2 = arrOri.clone();
int[] arr3 = arrOri.clone();
ex6_20_Sort sorter = new ex6_20_Sort(); //创建排序类的对象
sorter.bubbleSort(arr); //调用冒泡排序方法将数组排序
sorter.selectSort(arr2); //调用直接选择排序方法将数组排序
sorter.reverseSort(arr3); //反转排序
}
/**
* 冒泡排序
*
* @param array 要排序的数组
*/
public void bubbleSort(int[] array) {
cmpNum = 0;
chgNum = 0;
for (int i = 0; i < array.length - 1; i++) {
for (int j = 1; j < array.length - i; j++) {
if (array[j - 1] > array[j]) {
int tmp = array[j - 1];
array[j - 1] = array[j];
array[j] = tmp;
chgNum++;
}
cmpNum++;
}
}
showArray(array);
System.out.println("bubbleSort--" + "cmpNum: " + cmpNum + " chgNum: " + chgNum);
}
/**
* 直接选择排序
*
* @param array 要排序的数组
*/
public void selectSort(int[] array) {
cmpNum = 0;
chgNum = 0;
int index;
for (int i = 0; i < array.length - 1; i++) {
index = 0;
for (int j = 1; j < array.length - i; j++) {
if (array[j] > array[index]) {
index = j;
chgNum++;
}
int tmp = array[array.length - i - 1];
array[array.length - i - 1] = array[index];
array[index] = tmp;
cmpNum++;
}
}
showArray(array);
System.out.println("selectSort--" + "cmpNum: " + cmpNum + " chgNum: " + chgNum);
}
/**
* 反转排序
*
* @param array 要排序的数组
*/
public void reverseSort(int[] array) {
System.out.print("before reverse: ");
showArray(array);
int tmp;
int len = array.length;
for (int i = 0; i < len / 2; i++) {
tmp = array[i];
array[i] = array[len - i - 1];
array[len - i - 1] = tmp;
}
System.out.print("after reverse:");
showArray(array);
}
/**
* 显示数组中的所有元素
*
* @param array 要显示的数组
*/
public void showArray(int[] array) {
for (int x : array) {
System.out.print(x + "-");
}
System.out.println();
}
}