프로그래밍/java

[자바JAVA] 배열의 정렬(오름차순으로 정렬하기, 중복 값 제거하기)

pupu91 2022. 7. 7. 17:29
반응형

 배열의 정렬

 


 

 

 

  • 선택 정렬 : 배열을 전부 탐색하여 최소값을 고르고 왼쪽부터 채워나가는 방식
  • 버블 정렬 : 인접한 두 개의 원소를 검사하여 정렬하는 방법
  • 사입 정렬 : 인접한 두 개의 원소를 검사하여 정렬하는 방법 

 

 

 

  • 변수는 하나의 값만 저장 가능하므로 값을 대입하면 이전의 값은 소면된다. 때문에 임시변수를 하나 생성하여 기존의 값을 따로 보관하고 대입 작업을 통해 값을 서로 변경해야 한다.
arr배열의 값을 132로 변경해보자
int[] arr = {2, 1, 3};

int temp1;

temp2 = arr[0]; => 새로운 변수안에 arr 인덱스 0번 값을 저장한.
arr[0] = arr[1]; =>arr인덱스 0번 값은 비워져 있으므로 값을 변경할 수 있다.
arr[1] = arr[2];
arr[2] = temp2; 

for(int num : arr) {
			System.out.print(num + " ");
		}
        
 ◇ 실행 결과 
 1 3 2

 

 

반응형

 

 

 

  • 오름차순으로 정렬하기

  ⓐ int[] iarr = {2, 5, 4, 6, 1, 3};
   
   ⓑ for(int i = 1; i < iarr.length; i++) {
	   ⓒ for(int j = 0; j < i; j++) { 
        ⓓ if(iarr[i] < iarr[j]) {
        
         ⓔ int temp;
	temp = iarr[i];
	iarr[i] = iarr[j];
	iarr[j] = temp;
   }
}
 ⓕ System.out.println("정렬 완료 : " + Arrays.toString(iarr));
 
 ◇ 실행 결과
 정렬 완료 : [1, 2, 3, 4, 5, 6]

ⓐ 초기 배열 선언 및 초기화한다.

 

ⓑ 인덱스를 한 개씩 증가시키는 반복문을 작성한다. 첫 번째 인덱스는 비교할 필요가 없으니 0번 이후인 1번 인덱스부터         비교할 수 있게 작성한다.

 

ⓒ 1번인덱스부터 5번 인덱스까지 반복하는 반복문을 작성한 후, 앞의 값과  비교할 수 있는  반복문을 작성한다. (인덱스가 증가할 때마다 처음부터 해당 인덱스 -1까지의 값을 비교할 수 있게 작성한다. ex ) i가 1일때 j는 0까지, i가 2일때 j는 01까지) 

 

ⓓ j가 i보다 작을 동안(j<i;) iarr의 i값과 iarr의 j값을 비교한 후 바꿔줘야하는지 판단할 수 있는 조건문 작성한다.(내림차순으로 구현하고자 한다면 부등호 방향을 반대로 처리하면 된다)

 

ⓔ값을 바꿀때 필요한 임시 변수 생성 후 값 위치를 변경한다.

 

ⓕ for문의 결과를 출력할 수 있는Arrays.toString()을 이용하여 값을 출력한다.

 

 

 

 

 

  •  배열 중복 제거하기
→ 10개짜리 int형 배열에 1~20 사이의 난수 값을 채우고 중복없이 출력해보자.

int[] arr = new int[10];

for(int i = 0; i < arr.length; i++) {
	arr[i] = (int)(Math.random() * 20) + 1;
	 for(int j = 0; j < i; j++) {
		if(arr[i] == arr[j]) {
		i--; (i값을 줄여준다. 중복시 다음 인덱스로 넘어가지 않고
                  해당 인덱스위치에서 다시 난수 값을 뽑는다)
	}
  }		
}
 System.out.println(Arrays.toString(arr));

 

반응형