1. 정렬 (Sorting)
Collections 클래스의 정렬은 속도가 비교적 빠르고 안정성이 보장되는 합병 정렬을 이용한다. 합볍 정렬은 시간 복잡도가 O(nlog(n)이며 특히 거의 정렬된 리스트에 대해서는 상당히 빠르다.
package ex13;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
public class Sort {
public static void main(String[] args) {
String[] sample = {"A", "D", "B", "C"};
List<String> list = Arrays.asList(sample); // 배열을 리스트로 변경
Collections.sort(list);
System.out.println(list);
}
}

2. 섞기 (Suuffling)
섞기 알고리즘은 정렬과 반대 동작을 한다. 리스트에 존재하는 정렬을 파괴하여서 순서를 랜덤하게 만든다.
package ex13;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class Shuffle {
public static void main(String[] args) {
List<Integer> list = new ArrayList<Integer>();
for (int i = 0; i < 10; i++)
list.add(i);
Collections.shuffle(list); // 섞기 클래스
System.out.println(list);
}
}
1회차

2회차

3. 탐색 (Searching)
리스트 안에서 원하는 원소를 찾는 것이다. 만약 리스트가 정렬되어 있지 않다면 처음부터 모든 원소를 방문해야 한다(선행 탐색). 하지만 리스트가 정렬되어 있다면 중간에 있는 원소와 먼저 비교하는 것이 좋다(이진 탐색). 만약 || 중간 원소 < 찾는 원소 || 이면 뒷 부분에는 있고 || 중간 원소 > 찾는 원소 || 이면 앞 부분에 있다. 이렇게 하면 찾는 횟수를 반으로 줄일 수 있다.
package ex13;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class Ser01 {
public static void main(String[] args) {
int key = 20;
List<Integer> list = new ArrayList<Integer>();
for (int i = 0; i < 100; i++)
list.add(i);
int index = Collections.binarySearch(list, key);
System.out.println("탐색의 반환값 : " + index);
}
}

Share article