본문 바로가기
Algorithm

[알고리즘/자바] 배열 역순 정렬 알고리즘

Writer mintparc 2019. 12. 16.

배열 역순 정렬 알고리즘


int arr = {1, 2, 3, 4, 5};

배열 arr을 역순 정렬해서 {5, 4, 3, 2, 1} 결과값이 나오게 하는 메서드를 작성해보자.

 

 

 

1. 교환횟수


arr 배열을 역순 정렬하기 위해서는 가장 먼저 1과 5를 교환하고, 2와 4를 교환하면 된다. 이렇듯 배열을 역순 정렬하기 위해서 이루어져야 하는 교환 횟수는 배열의 길이/2이다. 길이가 홀수인 경우 가운데 요소는 교환할 필요가 없기 때문에 이 나눗셈에서 나머지는 버린다.

 

 

2. 두 값의 교환


두 값의 교환은 공중에서 바꿔치기하듯이 이루어질 수 없다. 반드시 임시로 값을 담아둘 변수를 마련하여, 그 곳에 값을 담아두고 다른 값을 옮기는 과정을 거쳐야한다.

 

 

 

 

 

arr[0]의 값을 arr[4]에 대입하는 순간 arr[4]는 1이 되고, 원래 들어 있던 값 5를 arr[0]으로 옮길 수 없게 된다. 따라서 임시로 값을 담아둘 변수가 필요하다. 배열과 같은 자료형을 가진 변수를 하나 선언해서 사용하도록 한다.

 

 

 

 

 

int t라는 변수를 선언하고, arr[0] 번지의 값을 임시로 넣어두었다. 이제 비어있는 arr [0] 번지에 arr [4] 번지에 들어있던 값인 5를 대입한다. 그리고 다시 비어있는 arr[4]번지에 t에 들어있는 값을 넣어주면 두 값의 교환이 이루어진다. 

 

 

배열 역순 정렬 코드


public class reverse {

	public static void main(String[] args) {
		int[] arr = { 3, 4, 1, 8, 2 };				//역순정렬할 배열
		int t;

		for (int i = 0; i < arr.length / 2; i++) {	//역순정렬
			t = arr[i];
			arr[i] = arr[arr.length - 1 - i];
			arr[arr.length - 1 - i] = t;
		}
		
		for(int a : arr) {							//출력해서 확인해보자
			System.out.print(a);
		}
	}
}

 

댓글