배열 에 대한 개인 적 이해

5749 단어 자바
배열 정의:배열 은 연속 적 인 공간 을 가 진 용기 로 이해 할 수 있 습 니 다.그 중에서 같은 유형의 수,같은 유형의 대상 을 넣 을 수 있 습 니 다.
배열 의 특징:1.연속 공간
2.유형 고정
3.공간 크기 고정
배열 의 정의 방식:
1.배열 형식[]  배열 이름=new 배열 형식[배열 길이];(1 차원)
       배열 형식[][]  배열 이름=new 배열 형식[줄][열];(2 차원)
   ····
   ···
2.데이터 형식  [] 배열 이름  = {값,값,··};
      데이터 형식  [][] 배열 이름  = {{값,값},{값,값},··};
   ····
   ···
3.데이터 형식[]배열 이름;
   배열 이름=new 데이터 형식[배열 길이];
  
   주:사용 불가     배열 이름={값··};
  
4.데이터 형식  []  배열 이름=new 데이터 형식[]{값,값,·};
연습:1.배열 정렬,각 조 의 모든 사람 이 정렬 방법(거품 제외)을 실현 해 야 합 니 다.
a)정렬 삽입:정렬 되 지 않 은 데 이 터 를 정렬 하지 않 은 시퀀스 에서 뒤로 스 캔 하여 해당 위 치 를 찾 아 삽입 하 는 작업 원리 입 니 다.
1.첫 번 째 요소 부터 이 요 소 는 정렬 되 었 다 고 볼 수 있 습 니 다.
2.다음 요 소 를 꺼 내 정렬 된 요소 시퀀스 에서 뒤에서 스 캔 합 니 다.
3.이 요소(정렬 됨)가 새 요소 보다 크 면 이 요 소 를 다음 위치 로 이동 합 니 다.
4.정렬 된 요소 가 새 요소 보다 작 거나 같은 위 치 를 찾 을 때 까지 3 단 계 를 반복 합 니 다.
5.새 요 소 를 이 위치 에 삽입 합 니 다.
6.반복 단계 2
b)정렬 선택
먼저 정렬 되 지 않 은 시퀀스 에서 최소 요 소 를 찾 아 정렬 시퀀스 의 시작 위치 에 저장 한 다음 에 나머지 정렬 되 지 않 은 요소 에서 최소 요 소 를 계속 찾 은 다음 정렬 시퀀스 의 끝 에 놓 습 니 다.모든 요소 가 정렬 될 때 까지 유추 합 니 다.
c)빠 른 정렬
    ▲수열 에서 하나의 원 소 를 골 라'기준'(Pivot)이 라 고 한다.
▲수열 을 다시 정렬 하면 모든 원소 가 기준 치보다 작은 것 은 기준 앞 에 놓 이 고 모든 원소 가 기준 치보다 큰 것 은 기준 뒤에 놓 인 다(같은 수 는 임 의 한 쪽 에 놓 일 수 있다).이 파 티 션 이 종료 되면 이 기준 은 수열 의 중간 위치 에 있 습 니 다.이것 을 파 티 션(partition)작업 이 라 고 합 니 다.
▲귀속 지(recursive)는 기준 치 원소 보다 작은 하위 수열 과 기준 치 원소 보다 큰 하위 수열 을 정렬 한다.
d)힐 정렬:체감 증분 정렬 알고리즘 이 라 고도 부 르 며 정렬 을 삽입 하 는 빠 르 고 안정 적 인 개선 버 전 입 니 다.
힐 정렬 은 정렬 을 삽입 하 는 다음 과 같은 두 가지 성질 을 바탕 으로 개선 방법 을 제시한다.
1.삽입 정렬 은 거의 정렬 된 데이터 작업 을 할 때 효율 이 높 고 선형 정렬 의 효율 을 달성 할 수 있 습 니 다.
2.그러나 정렬 을 삽입 하 는 것 은 일반적으로 비효 율 적 입 니 다.정렬 을 삽입 할 때마다 데 이 터 를 한 자리 만 이동 할 수 있 기 때 문 입 니 다>
e)더미 정렬
f)병합 정렬
g)거품 정렬
2.2 차원 배열 을 정의 하고 모든 요소 에 무 작위 로 값 을 부여 한 다음 배열 을 옮 겨 다 니 며 가장 큰 값(이 값 이 있 는 줄 과 열 포함)을 찾 아 출력 합 니 다.

import java.util.Random;

public class Array {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
//		 sort1();
//		 sort2(10);
//		 sort4(10);
		 sort3(4,5);
	}
	
/**
 * 	//    
 */
	public static void sort1(){
		int[] base ={9,10,29,29,20,15,35,9,3,30};
		System.out.println("       :");
		for(int i=0;i<base.length;i++){
			System.out.print(base[i]+"\t");
		}
		
		System.out.println();
		System.out.println("     ( -> ):");
		
		for(int i=0;i<base.length;i++){
			
			int lowerIndex = i;
//			      
			for(int j=i+1;j<base.length;j++){
				if(base[j]<base[lowerIndex]){
					lowerIndex = j;
				}
			}
//			  
			int  temp = base[i];
			base[i] = base [lowerIndex];
			base[lowerIndex] = temp;
			System.out.print(base[i]+"\t");
		}
	}
	
/**
 * //    
 */
	public static void sort2(int count){
//		            
		int [] base = new int [count];
		Random ran = new Random();
		
		System.out.println("       :");
		
		for(int i=0;i<base.length;i++){
			int value = ran.nextInt(100);
			base[i] = value;
			
			System.out.print(base[i]+"\t");
		}
		
		System.out.println();
		System.out.println("     ( -> ):");
		
//		  
		for(int i=1;i<base.length;i++){
			for(int j=i;j>0;j--){
				if(base[j]<base[j-1]){
					int temp = base[j];
					base[j] = base[j-1];
					base[j-1] = temp;
				}
			}
		}
//		  
		for(int i=0;i<base.length;i++){
			System.out.print(base[i]+"\t");
		}
		
		
	}
	
/**
 *     	
 * @param count
 */
	public static void sort4(int count){
//		            
		int [] base = new int [count];
		Random ran = new Random();
		
		System.out.println("       :");
		for(int i=0;i<base.length;i++){
			int value = ran.nextInt(100);
			base[i] = value;
			
			System.out.print(base[i]+"\t");
		}
		
		System.out.println();
		System.out.println("     ( -> ):");
//		  
		for(int increment = base.length/2;increment>0;increment/=2){
//			      
			for(int i =increment;i<base.length;i++){
				int temp = base[i];
				int j=0;
				for( j=i;j>=increment;j-=increment){
					if(temp<base[j-increment]){
						base[j] = base[j-increment];
					}
					else{
						break;
					}
				}//end j
				base[j] = temp;
			}// end i
			
		}//end
		
		for(int i=0;i<base.length;i++){
			System.out.print(base[i]+"\t");
		}
		
	}
	
/**
 *   2
 */
	public static void sort3(int hang,int lie){
		int[][] base = new int[hang][lie];
		Random ran = new Random();
//		  
		for(int i=0;i<hang;i++){
			for(int j=0;j<lie;j++){
				base[i][j] = ran.nextInt(100);
				System.out.print(base[i][j]+"\t");
			}
				System.out.println();
		}
		
		int  max = 0;
		int x=0;
		int y=0;
		
		for(int i=0;i<hang;i++){
			for(int j=0;j<lie;j++){
				if(base[i][j]>max){
					max = base[i][j] ;
					x = i+1;
					y = j+1;
				}
				
			}
		}
		
		System.out.println("        :"+max+"\t :"+x+"\t :"+y);
		
	}
	
}


좋은 웹페이지 즐겨찾기