Language/Java
배열 순서대로 정렬하기
Anoi
2023. 1. 19. 11:39
배열 안 숫자들을 크기대로 정렬해보자
1) for문
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
int[] arr1 = {5,3,4,2,1};
int temp;
for(int i=0; i<arr1.length-1; i++){
for(int k=i+1; k<arr1.length; k++){
if(arr1[i]>arr1[k]){
temp=arr1[i];
arr1[i]=arr1[k];
arr1[k]=temp;
}
}
}
System.out.println(Arrays.toString(arr1));
//[1, 2, 3, 4, 5]
|
cs |
숫자를 순서대로 세우려면 첫번째 숫자를 2,3,4,5번째 숫자와 비교해야 한다.
그렇기 때문에 첫번째 for문은 0부터 시작하고 두번째 for문은 i보다 하나 크게 시작한다.
두번째 for문이 1부터 시작하는 게 아니라 i+1부터 시작하는 이유는
i가 3번째 숫자라고 가정할 때
이미 1,2번째 숫자는 비교가 되어 정렬된 상태이기 때문에 다시 비교할 필요없이 4번째 숫자부터 비교해야 하기 때문이다.
이 방법도 물론 가능하지만 이중 for문에다가 i, k값 설정할 때 실수가 나오기 쉬운 것 같다.
2) sort()
1
2
3
4
5
|
int[] arr2 = {5,3,4,2,1};
Arrays.sort(arr2);
System.out.println(Arrays.toString(arr2));
//[1, 2, 3, 4, 5]
|
cs |
Arrays.sort(정렬할 배열 이름)
sort()를 사용하면 간단하게 해결할 수 있다.
숫자 뿐만 아니라 문자열도 정렬 가능하다.
1
2
3
4
|
String strArr[] = {"사과", "강아지", "고양이","오리","너구리"};
Arrays.sort(strArr);
System.out.println(Arrays.toString(strArr));
//[강아지, 고양이, 너구리, 사과, 오리]
|
cs |
sort()는 기본적으로 오름차순 정렬이다.
내림차순으로 정렬하고 싶다면 Collections.reverseOrder를 인자로 추가하면 된다.
Arrays.sort(arr, Collections.reverseOrder());
1
2
3
4
5
6
|
Integer[] arr = {5,4,3,2,1};
Arrays.sort(arr, Collections.reverseOrder());
System.out.println(Arrays.toString(arr));
//[5, 4, 3, 2, 1]
|
cs |
다만, Collections로 인해 primitvie 타입을 쓸 수 없어 int 대신 Integer 타입의 배열을 이용해야 한다.