파게로그

[기본 문법] 리스트, 배열 정렬하기 본문

콤퓨타 왕왕기초/PS

[기본 문법] 리스트, 배열 정렬하기

파게 2020. 11. 12. 13:25
Python

list.sort(key=None,reverse=False)

리스트의 항목들을 제자리에서 정렬합니다 (인자들은 정렬 커스터마이제이션에 사용될 수 있습니다.)

 

sorted(iterable,*,key=None,reverse=False)

iterable의 항목들로 새 정렬된 리스트를 돌려줍니다.

키워드 인자로만 지정해야 하는 두 개의 선택적 인자가 있습니다.

key는 하나의 인자를 받는 함수를 지정하는데, iterable의 각 요소들로부터 비교 키를 추출하는 데 사용됩니다(예를 들어, key=str.lower).

기본값은 None입니다(요소를 직접 비교합니다).

reverse는 논리값입니다. True로 설정되면, 각 비교가 뒤집힌 것처럼 리스트 요소들이 정렬됩니다.

예전 스타일의 cmp 함수를 key 함수로 변환하려면 functools.cmp_to_key()를 사용하세요.

내장 sorted() 함수는 안정적(stable)임이 보장됩니다.

 

 

 

C++

devdocs.io/cpp/algorithm/sort

sort(first, last) // [first, last) 범위를 정렬한다.

sort(first, last, comp) // comp에 따라서 정렬.

comp는 bool cmp(const Type1 &a, const Type2 &b);와 같은 함수로서

true를 반환하는 것은 a가 b보다 작다는 것, 즉 왼쪽에 있다는 것을 말한다.

 

 

 

Java

Comparable 인터페이스: https://docs.oracle.com/javase/7/docs/api/java/lang/Comparable.html

Comparator 인터페이스: https://docs.oracle.com/javase/7/docs/api/java/util/Comparator.html

비교한 글

https://m.blog.naver.com/PostView.nhn?blogId=occidere&logNo=220918234464&proxyReferer=https:%2F%2Fwww.google.co.kr%2F https://gmlwjd9405.github.io/2018/09/06/java-comparable-and-comparator.html

 

1. Comparable(java.lang.Comparable)

 

Comparable은 natural ordering의 기준이 되는 compareTo 메서드를 정의하는 인터페이스이다. Java에서 정렬이 가능한 클래스에는 모두 Comparable 인터페이스가 이미 구현되어 있다. 즉 Arrays.sort(array)와 Collections.sort(list)를 통해 정렬이 가능하다.

 

사용자가 만든 클래스에는, 정렬할 클래스에,

1. Comparable 인터페이스를 implement한다.

2. compareTo() 메서드를 override하여 구현한다.

 

여기서 compareTo() 메서드는 다음과 같이 동작한다.

if 호출한 객체<파라미터로 넘어온 객체, compareTo() returns v<0

if 호출한 객체==파라미터로 넘어온 객체, compareTo() returns 0

if 호출한 객체>파라미터로 넘어온 객체, compareTo() returns v>0

 

Arrays.sort(array), Collection.sort(list)와 같이 사용한다.

 

오름차순 정렬이기에 compareTo()가 양수를 반환할 때에만 두 객체의 자리를 바꾸어준다.

 

2. Comparator(java.util.Comparator)

 

Comparator는 Comarable 인터페이스가 구현되어 있는 클래스에 대해서 natural ordering 이외의 정렬 기준을 적용하고자 할 때 사용하는 인터페이스이다. 클래스에 직접 접근할 수 없는 경우에도 Comparator를 이용할 수 있다.

 

1. Comparator 인터페이스를 implement한다.

2. compare() 메서드를 override하여 myComparator 클래스를 작성한다.

 

여기서 compare() 메서드는 다음과 같이 동작한다.

if 파라미터로 넘어온 첫 번째 객체 < 두 번째 객체, compareTo() returns v<0

if 파라미터로 넘어온 첫 번째 객체 == 두 번째 객체, compareTo() returns 0

if 파라미터로 넘어온 첫 번째 객체 > 두 번째 객체, compareTo() returns v>0

 

Arrays.sort(array, myComparator), Collections.sort(list, myComparator)과 같이 사용한다.

 

Comments