Netjava Lesson 9便利なストレージコンテナ-配列
2013.07.27
この授業で私たちが話したいのは配列です.配列はCを勉強している間に接触しましたが、javaの配列とCは違います.私たちは少し紹介します.
1、連続空間はまず1つの配列を定義し、ここでintタイプの配列を定義する:int[]array=new int[10];配列を定義すると、メモリにスペースが開き、サイズは4*8*10=320個の0 1からなります.また、この空間は連続しており、arrayはヘッダアドレスであり、array[0]のアドレスでもあり、後述するアドレスは次の表に基づいて計算されます.
2、タイプが固定的に1つのタイプを定義した後、私たちのint[]array=new int[10]のように変更することはできません.
これで整数配列が定義され、array[0]を後で使用する場合は、彼を整数として使用し、文字列を割り当てることはできません.
3、空間固定サイズ配列を定義すると、メモリに固定された空間が開き、そのサイズは変更できません.長さ10の配列arrayを開くと、array[10]を参照すると、配列オーバーフローと誤報されます.
4、定義方式配列には、int[]array=new int[10]を除いて、多くの定義方式がある.またint[]array={1,2,3,4,5};int[] array2 ;array2 = array;int[] array = new int[]{1,2,3,4,5};
5、配列は1つの唯一の属性しかありません:length配列は1つの容器ですが、方法がなく、1つの属性しかありません.それは配列の長さです.配列の長さとデータ型が分かれば、この配列を使うことができます.
ジョブ:1、配列ソート:ここではArraysクラスのsortメソッドを直接呼び出し、配列を迅速にソートします.
ここでは4つの方法を紹介します.
2、2 D配列:ランダムに値を割り当て、最大値、出力値、行、列を探し出す
この授業で私たちが話したいのは配列です.配列はCを勉強している間に接触しましたが、javaの配列とCは違います.私たちは少し紹介します.
1、連続空間はまず1つの配列を定義し、ここでintタイプの配列を定義する:int[]array=new int[10];配列を定義すると、メモリにスペースが開き、サイズは4*8*10=320個の0 1からなります.また、この空間は連続しており、arrayはヘッダアドレスであり、array[0]のアドレスでもあり、後述するアドレスは次の表に基づいて計算されます.
2、タイプが固定的に1つのタイプを定義した後、私たちのint[]array=new int[10]のように変更することはできません.
これで整数配列が定義され、array[0]を後で使用する場合は、彼を整数として使用し、文字列を割り当てることはできません.
3、空間固定サイズ配列を定義すると、メモリに固定された空間が開き、そのサイズは変更できません.長さ10の配列arrayを開くと、array[10]を参照すると、配列オーバーフローと誤報されます.
4、定義方式配列には、int[]array=new int[10]を除いて、多くの定義方式がある.またint[]array={1,2,3,4,5};int[] array2 ;array2 = array;int[] array = new int[]{1,2,3,4,5};
5、配列は1つの唯一の属性しかありません:length配列は1つの容器ですが、方法がなく、1つの属性しかありません.それは配列の長さです.配列の長さとデータ型が分かれば、この配列を使うことができます.
ジョブ:1、配列ソート:ここではArraysクラスのsortメソッドを直接呼び出し、配列を迅速にソートします.
ここでは4つの方法を紹介します.
//
private void shellsort() {
int[] array = { 123, 42, 12, 58, 29, 56 };
for (int in = array.length / 2; in > 0; in /= 2) {
for (int i = in; i < array.length; i++) {
int t = array[i];
int j = 0;
for (j = i; j >= in; j = j - in) {
if (t < array[j - in]) {
array[j] = array[j - in];
} else {
break;
}
}
array[j] = t;
}
}
}
//
private void insort() {
int[] array = { 123, 42, 12, 58, 29, 56 };
for (int i = 1; i < array.length; i++) {
for (int j = i; j > 0; j--) {
if (array[j] < array[j - 1]) {
int t = array[j];
array[j] = array[j - 1];
array[j - 1] = t;
}
}
}
}
//
private void selectsort() {
int[] array = { 123, 42, 12, 58, 29, 56 };
for (int i = 0; i < array.length; i++) {
int min = i;
for (int j = i + 1; j < array.length; j++) {
if (array[min] > array[j])
min = j;
}
int t = array[i];
array[i] = array[min];
array[min] = t;
}
}
//
public void arraysort() {
int[] array = { 123, 42, 12, 58, 29, 56 };
// Array sort
Arrays.sort(array);
}
2、2 D配列:ランダムに値を割り当て、最大値、出力値、行、列を探し出す
public void sort() {
//
int[][] array = new int[5][5];
//
Random r = new Random();
//
int max = 0;
//
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[i].length; j++) {
array[i][j] = r.nextInt(10);
}
}
//
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[i].length; j++) {
if (max < array[i][j])
max = array[i][j];
}
}
System.out.println(" "+max);
//
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[i].length; j++) {
if(array[i][j]==max){
System.out.println(" "+i+" , "+j+" ");
}
}
}
}