Java sort() Arrays와 Collections

2023. 6. 21. 12:50·Java
728x90

Java의 정렬 내장 함수

Arrays.sort() 와 Collections.sort()는 서로 다른 정렬 알고리즘으로 구현

int[] array = new int[]{1, 3 , 5, 4, 2};
Arrays.sort(array);

List<Integer> collection = new ArrayList<>(List.of(1, 3, 5, 4, 2));
Collections.sort(collection);

 

Arrays.sort()

Arrays.sort() 확인했을 때, 듀얼피봇 퀵정렬(Dual-Pivot QuickSort) 확인

듀얼피봇 퀵정렬(Dual-Pivot QuickSort)

  • 피봇을 2개를 두고 3개의 구건을 만들어 퀵 정렬 진행하는 알고리즘
  • 퀵소트보다 좋은 성능

 

Collections.sort()

  • nlg(n) 비교보다 훨씬 적은 수의 비교를 필요로 하는 안정적인 적응형 반복 병합 정렬
  • 입력 배열이 무작위로 정렬될 때 기존 병합 정렬의 성능
  • Tim Peter 에 의해 고안된 Insertion Sort, Merge Sort가 혼용 된 하이브리드 정렬 사용

 Timsort

삽입 정렬과 합병정렬을 결합하여 만든 정렬로 합병정렬을 기반으로 구현하되, 일정 크기 이하의 부분 리스트에 대해서는 이진 삽입 정렬을 수행한다. Quick Sort의 경우 분명 일반적으로 빠르긴 하지만, 특정 상태(정렬 된 상태)에서는 급격히 성능이 떨어지게 된다. 가장 안정적이면서 비교비용이 비쌀 경우에도 이득을 볼 수 있는 병합 정렬이 적절해 보인다. Merge Sort는 안정 정렬이 가능하기 때문에 현실 데이터에 대해 더욱 알맞은 정렬 방법이기도 하다.

Tim Sort에서는 일정 사이즈의 부분 리스트를 얻고(divide), 각각의 부분리스트들에 대해 삽입정렬을 수행하며 정렬을 하며(sort), 정렬 된 부분리스트들을 다시 합치는 방식(conqure)을 사용하게 된다.

 

 

더보기

참고

 

자바 [JAVA] - 팀 정렬 (Tim Sort)

[정렬 알고리즘 모음] 더보기 1. 계수 정렬 (Counting Sort) 2. 선택 정렬 (Selection Sort) 3. 삽입 정렬 (Insertion Sort) 4. 거품 정렬 (Bubble Sort) 5. 셸 정렬 (Shell Sort) 6. 힙 정렬 (Heap Sort) 7. 합병(병합) 정렬 (Merge

st-lab.tistory.com

 

 

 

 

 

 

728x90
저작자표시 비영리 변경금지 (새창열림)
'Java' 카테고리의 다른 글
  • ProcessBuilder Java 쉘 명령어, 스크립트 실행
  • [Mac OS / Java] 맥 JDK 자바 버전 변경
  • 멀티 스레드 환경, 동시성 이슈, 해결방법 | 스레드 안전성 (Thread-safe)
  • 객체 지향 프로그래밍 OOP 특징 | 캡슐화, 추상화, 상속, 다형성
Karla Ko
Karla Ko
𝘾𝙤𝙣𝙩𝙞𝙣𝙪𝙤𝙪𝙨𝙡𝙮 𝙄𝙢𝙥𝙧𝙤𝙫𝙞𝙣𝙜, 𝘾𝙤𝙣𝙨𝙩𝙖𝙣𝙩𝙡𝙮 𝘿𝙚𝙫𝙚𝙡𝙤𝙥𝙞𝙣𝙜 𝙔𝙚𝙨!
    250x250
  • Karla Ko
    karlaLog
    Karla Ko
  • 전체
    오늘
    어제
    • Total (467)
      • Spring (19)
      • JPA (4)
      • Cloud & Architecture (15)
        • Kubernetes (5)
        • Docker (3)
        • MSA (2)
        • GCP (1)
        • AWS (4)
      • Devops (1)
      • Message Queue (4)
        • Kafka (2)
        • RabbitMQ (2)
      • Git (4)
      • DB (4)
      • Java (9)
      • Python (4)
      • CS (11)
        • OS (8)
        • Network (2)
        • Algorithm (1)
      • Coding Test (392)
        • programmers (156)
        • Graph (43)
        • DP (37)
        • Search (31)
        • Tree (13)
        • Data Structure (26)
        • Combination (12)
        • Implement (18)
        • Geedy (23)
        • Sort (7)
        • Math (21)
        • geometry (2)
  • 블로그 메뉴

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    LIS
    재귀
    자료구조
    그래프
    이분탐색
    백준
    알고리즘
    월간코드챌린지
    구현
    그리디
    BFS
    동적계획법
    구간합
    플로이드워셜
    덱
    최단거리
    조합
    DFS
    다익스트라
    힙
    프로그래머스
    정렬
    큐
    최소신장트리
    Algorithm
    파이썬
    트리
    DP
    최대공약수
    스택
  • hELLO· Designed By정상우.v4.10.3
Karla Ko
Java sort() Arrays와 Collections
상단으로

티스토리툴바