inblog logo
|
An's Blog
    JAVA

    [JAVA] 59. Collection - Collections

    윤설안's avatar
    윤설안
    Feb 19, 2025
    [JAVA] 59. Collection - Collections
    Contents
    1. 정렬 (Sorting)2. 섞기 (Suuffling)3. 탐색 (Searching)
    💡
    Collections 클래스는 여러 유용한 알고리즘을 구현한 메서드들을 제공한다.

    중요 알고리즘

    • 정렬 (Sorting)
    • 섞기 (Suuffling)
    • 탐색 (Searching)

    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); } }
    notion image

    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회차

    notion image

    2회차

    notion image

    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); } }
    notion image
    Share article
    Contents
    1. 정렬 (Sorting)2. 섞기 (Suuffling)3. 탐색 (Searching)

    An's Blog

    RSS·Powered by Inblog