정렬 .sort()

2024. 2. 5. 20:42· Problem Solving/자바 문법

원시타입과 Object 타입의 차이

웬만하면 Object타입쓰자

stable: 앞에서 나온 놈이 앞으로간다.

 

Object타입이 최악이 NlogN이니깐 무조건 유리한거 아닌가 싶지만

평균적인 속도가 같은 NlogN이더라도 퀵소트가 보통의 상황에서 더 빠른 NlogN이다.

또한 추가적인 메모리를 쓰지 않아서 각각의 장단점이 있다.

 

 

Arrays.sort()는 원시타입과 Object타입으로 나뉜다.

Collections.sort()는 리스트를 정렬하며 원시타입 배영보다 성능이 더욱 좋다.

 

 

 

Array.sort()는 기본적으로 오름차순이다.

내림차순으로 하려면 아래와 같이 하면 된다.

 

원시타입의 경우 함수자체에 내림차순 기능이 없다.

쉽게 생각하면

return 값이 양수이면 지금 순서 그대로, 음수이면 순서를 바꾼다고 외우면 된다. 0이면 stable하게 그대로

 

true이면 바꾼다.!!

 

아니면 o1-o2가 오름차순이라는 것을 외우자. 그리고 class1.compareTo(class2)는 class1이 앞에 오는게 오른차순이다. ex)string1.compareTo(string2)

Comparator함수를 lambda로도 쓸 수 있다.

Comparator는 compare함수만 가지는 인터페이스이다.

 

 

 

 

 

 


 

이를 해결하기 위한 두가지 방법

 

1. Comparable Interface 구현

 

compartTo는 compare함수와 동일한 역할을 하지만, 나와 쟤를 비교하는 것이다. 클래스안에 속해지는 함수이다,.

비교가 반복적이로 일어난다면 구현하는 것이 좋다.

코테가 아닌 경우에 클래스 구현에서 정렬기능이 클래스에서 중요할 때 사용하면 굿

2. Comparator 사용

 

compareTo로 비교하면 같은 값일 경우 다음 비교(여기선 이름비교)를 하지 않는다. 그렇기에 (나이가) 같으면 (이름으로)다른걸로 비교를 한다면 최종비교(이름)에만 compareTo함수를 불러와서 비교해야한다.

이또한 람다로 구현가능하다.

일회용일 경우 많이 씀.

코테에서는 이 방법 많이 씀

'Problem Solving > 자바 문법' 카테고리의 다른 글

Collections 시간복잡도 정리  (1) 2024.02.06
HashMap vs LinkedHashMap  (0) 2024.02.06
자료형 선언시 기본값  (0) 2024.01.31
진수 바꾸기  (0) 2024.01.30
배열 선언과 동시에 값 넣기  (0) 2024.01.30
'Problem Solving/자바 문법' 카테고리의 다른 글
  • Collections 시간복잡도 정리
  • HashMap vs LinkedHashMap
  • 자료형 선언시 기본값
  • 진수 바꾸기
윤재에요
윤재에요
yunzae.log윤재에요 님의 블로그입니다.
윤재에요
yunzae.log
윤재에요
전체
오늘
어제
  • 분류 전체보기 (438)
    • Computer Science (115)
      • 데이터베이스 (50)
      • 네트워크 (18)
      • 소프트웨어 공학 (1)
      • 알고리즘 (10)
      • 자료구조 (9)
      • 컴퓨터구조 (0)
      • 운영체제 (0)
      • 데이터 통신 (16)
      • 프로그래밍언어론 (11)
    • Project (20)
      • 후크(Flutter) (1)
      • BDSR로그북(App,BackEnd) (2)
      • 나만의 주점(STM32,Arduino,androi.. (9)
      • 공다(App,BackEnd) (2)
      • 카카오쇼핑 클론코딩 (4)
      • 암호화폐자동매매 (2)
    • Problem Solving (208)
      • 자바 문법 (20)
      • 파이썬 문법,함수 (6)
      • 그리디 (5)
      • 구현 (43)
      • DFS (3)
      • BFS (17)
      • 정렬 (15)
      • 이진 탐색 (16)
      • 다이나믹 프로그래밍 (6)
      • 최단 경로 (5)
      • 그래프 (1)
      • 자료구조 (5)
      • 투포인터 (15)
      • SQL (44)
      • 구간합 (7)
    • I leaned (78)
      • 스프링,스프링부트 (31)
      • Git (6)
      • JAVA (5)
      • Etc (30)
    • 취업 (15)
      • PT면접 (6)
      • 기술면접 (9)
      • 인성면접 (0)
    • log (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • 글쓰기

공지사항

인기 글

태그

  • 최단 거리
  • 효율적인화폐구성
  • 이것이 코딩테스트다
  • 계수정렬
  • 재시도
  • 교환정렬
  • 참조 무결성
  • 기수정렬
  • 이것이코딩테스트다
  • 다이나믹
  • 다익스트라
  • 다이나믹프로그래밍
  • 힙큐
  • 이것이 코딩테스트다.
  • Relationship model
  • E-R Model
  • 개미전사
  • 부품찾기
  • DP
  • 먀
  • weak entity
  • 제약 사항
  • 데이터베이스
  • 파이썬
  • 카카오테크캠퍼스
  • UML
  • 플로이드 워셜
  • 최단거리
  • 그리디
  • 다이어그램

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
윤재에요
정렬 .sort()
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.