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つの方法を紹介します.
	//    
	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+" ");
				}
			}
		}
	}