1. Arrays 메소드의 .sort() 이용하기
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
public class lecture3_sort {
public static void main(String[] args) {
Integer arr1[] = {4,6,2,3,4,2,2,5,6,7,24,3,52,51,4,4};
Integer arr2[] = {4,6,2,3,4,2,2,5,6,7,24,3,52,51,4,4};
// 오름차순 정렬하기. (숫자, 영문자, 한글 모두 가능하다.)
Arrays.sort(arr1);
// 배열을 메모리 레퍼런스가 아닌 값으로 출력하기 위해 Arrays.toString() 사용.
System.out.println(Arrays.toString(arr1));
// 내림차순 정렬하기. 내림차순은 int로는 안 된다. Integer arr[] = {4,6,2,3,4,2,2,5,6,7,24,3,52,51,4,4}; 로 해야한다.
Arrays.sort(arr1, Comparator.reverseOrder());
System.out.println(Arrays.toString(arr1));
// Collections 메소드로도 가능하다.
Arrays.sort(arr2, Collections.reverseOrder());
System.out.println(Arrays.toString(arr2));
}
}
결과 :
[2, 2, 2, 3, 3, 4, 4, 4, 4, 5, 6, 6, 7, 24, 51, 52] // arr1을 오름차순 정렬.
[52, 51, 24, 7, 6, 6, 5, 4, 4, 4, 4, 3, 3, 2, 2, 2] // arr1을 내림차순 정렬(Comparator 메소드 사용).
[52, 51, 24, 7, 6, 6, 5, 4, 4, 4, 4, 3, 3, 2, 2, 2] // arr2을 내림차순 정렬(Collections 메소드 사용).
자바의 .sort() 역시 스위프트처럼 배열을 정렬해서 바로 저장한다. (파이썬은 저장하지 않는다.)
.sort()가 오름차순만 가능하고 내림차순은 불가능하기 때문에 다른 메소드를 불러와야한다.
Collections 메소드를 불러오거나, Comparator 메소드를 불러와야한다.
Arrays.sort(ABC) : ABC 배열을 오름차순 정렬(숫자, 영문, 한글 모두 가능)
Arrays.sort(ABC, Comparator.reverseOrder()) : ABC 배열을 내림차순 정렬 (정수는 반드시 Integer로 선언해줘야 한다. int는 오류남.)
Arrays.sort(ABC, Collections.reverseOrder()) : 위와 동일하다. 정수는 Integer 필요함.
2. 이중 for문으로 구현하기
import java.util.Arrays;
public class lecture4_sortUsingDuplicationOfForFunction {
public static void main(String[] args) {
int[] arrs = new int[30]; // 비어있는 길이 30의 배열 생성.
for (int i = 0; i < arrs.length; i++) {
arrs[i] = (int) (Math.random() * 100) + 1; // Math.random()이 0.0 <= x < 1.0 사이의 랜덤 값을 생성한다.
}
System.out.println("[30개의 랜덤숫자 리스트]");
System.out.println(Arrays.toString(arrs) + "\n");
// 이중 for문을 사용한 오름차순 정렬하기.
for (int i = 0; i < arrs.length; i++) { // i를 앞에 있는 수, j를 뒤에 있는 수로 선언하고 비교하기.
for (int j = i+1; j < arrs.length; j++) {
if (arrs[i] > arrs[j]) { // 앞에 있는 수 > 뒤에 있는 수 라면 실행.
int temp = arrs[i]; // 앞에 있는 큰 값을 임시로 저장.
arrs[i] = arrs[j]; // 뒤에 있는 작은 값을 앞으로 이동.
arrs[j] = temp; // 앞에 있던 값을 뒤에다 넣음.
} else {
continue;
}
}
}
System.out.println("[오름차순 정렬]");
System.out.println(Arrays.toString(arrs) + "\n");
// 이중 for문을 사용한 내림차순 정렬하기.
for (int i = 0; i < arrs.length; i++) { // i를 앞에 있는 수, j를 뒤에 있는 수로 선언하고 비교하기.
for (int j = i+1; j < arrs.length; j++) {
if (arrs[i] < arrs[j]) { // 앞에 있는 수 < 뒤에 있는 수 라면 실행.
int temp = arrs[i]; // 앞에 있는 작은 값을 임시로 저장.
arrs[i] = arrs[j]; // 뒤에 있는 큰 값을 앞으로 이동.
arrs[j] = temp; // 앞에 있던 값을 뒤에다 넣음.
} else {
continue;
}
}
}
System.out.println("[내림차순 정렬]");
System.out.println(Arrays.toString(arrs));
}
}
결과 :
[30개의 랜덤숫자 리스트]
[53, 91, 24, 73, 60, 85, 20, 33, 74, 25, 65, 64, 76, 22, 41, 16, 87, 28, 23, 45, 96, 84, 8, 68, 89, 42, 98, 1, 38, 79]
[오름차순 정렬]
[1, 8, 16, 20, 22, 23, 24, 25, 28, 33, 38, 41, 42, 45, 53, 60, 64, 65, 68, 73, 74, 76, 79, 84, 85, 87, 89, 91, 96, 98]
[내림차순 정렬]
[98, 96, 91, 89, 87, 85, 84, 79, 76, 74, 73, 68, 65, 64, 60, 53, 45, 42, 41, 38, 33, 28, 25, 24, 23, 22, 20, 16, 8, 1]
'개발자 > Java' 카테고리의 다른 글
Java (자바) 문자열 비교연산, 형변환을 이용한 종료 조건 구현 (0) | 2020.04.06 |
---|---|
Java (자바) 숫자 + 문자의 자료형 판단 (묵시적 형변환) (0) | 2020.04.06 |
Java (자바) 배열 정렬하기, 행렬 만들고 정렬해서 더하기 (0) | 2020.04.06 |
Java (자바) 메소드 (0) | 2020.04.05 |
Java (자바) 배열과 레퍼런스 (0) | 2020.04.05 |