본문으로 바로가기
반응형
class Ex1 { 
    public static void main(String[] args) 
    { 
   
    int[] number = new int[10];
    
    for(int i =0; i<number.length; i++) {
    System.out.print(number[i] = (int)(Math.random() *10));	
    }
    System.out.println();
    	for(int i =0; i < number.length; i++) {
    	
    		boolean changed = false;
    		
    		for(int j =0; j<number.length-1-i; j++) {
    		
    			if(number[j]>number[j+1]) { //옆의 값이 크면 서로 바꾼다.
    			int temp = number[j];
    			number[j] = number[j+1];
    			number[j+1] = temp;
    			changed = true; //자리바꿈발생
    			
    		}
    	}
    	for(int k =0; k<number.length; k++) 
    		
    		System.out.print(number[k]); //매 반복마다 정렬된 결과를 출력
    		
    		System.out.println();
    		if(!changed) break;
    	}
    	
    	
    }
   	


크기가 10인 배열에 0과 9 사이의 임의의 값(Math.random)으로 채운 뒤, 버블정렬 알고리즘을 통해 크기순으로 정렬하는 예제

배열의 크기가 n일 때, 배열의 첫 번째부터 n-i까지의 요소에 대해, 근접한 값과 크기를 비교하여 자리바꿈을 반복

효율적인 작업을 위해 changed라는 boolean 변수를 두어 자리바꿈이 없으면 빠져나가도록 했다.


책 - 자바의 정석  / 카페 - 남궁성의 코드초보스터디


반응형