프로그래밍/C++

C++ sort 알고리즘 완벽 정리 (예제 첨부)

워킹독 2020. 11. 5. 06:51
728x90

sort algorithm 문법정리 썸네일

C++ 에서 sort algorithm 사용법에 대해서 정리해봤습니다.

 

개발할 때, 정렬을 정말 많이 사용합니다.

기본적으로 오름차순, 내림차순 정렬을 할 수가 있고 더 나아가 객체정렬을 필요한 경우가 있습니다.

 

그럴때 어렵지 않게 사용하는 정렬 알고리즘이 stl::sort( )가 되겠습니다.

 

 

 

 

sort - C++ Reference

custom (2)template void sort (RandomAccessIterator first, RandomAccessIterator last, Compare comp);

www.cplusplus.com

 

- Header파일 추가

#include <algorithm>

 

- 함수 원형

template<typename T>

void sort(T start, T end);

 

template<typename T>

void sort(T start, T  end, Compare comp);

[3번째 인자값 : 사용자 정의한 함수 또는 STL에 존재하는 이항조건자(less, greater)]

 

- 비교 가능

  1. 숫자 비교
  2. 대소 비교 가능한 모든 원소에 대해 정렬 가능 ( int, char, string 등..)
  3. 객체 비교 가능 ( 단, 사용자 정의 함수를 이용하며 연산자 오버로딩('<')을 정의해줘야함 )

 

- 예시

[start, end) 의 범위에 있는 인자(element)

  start를 포함하고 end를 포함하지 않는 구간!

 

배열(arr), vector(v)

  1. sort(arr, arr + n);                                           // 배열에서 사용 (시작점 주소와 마지막 주소 + 1)
  2. sort(v.begine(), v. end());  [less<자료형>() 생략]    // 오름차순 정렬 (default = Ascending order)
  3. sort(v.begine(), v. end(), greater<자료형>());        // 내림차순 정렬 (Descending order)
  4. sort(v.begine(), v. end(), compare);                    // 사용자 정의 함수 compare

 

  • 배열 사용 예시

3번째 인자가 빈값으로 설정 --> Default 오름차순 [less<int>() 생략]

sort 알고리즘 예시_1
sort 알고리즘 예시_2
배열 정렬

 

  • Vector 사용 예시

string 기준으로 오름차순, 내림차순 사용 방법 [아스키코드 기준으로 정렬됨]

sort 알고리즘 예시_3
sort 알고리즘 예시_4
vector 정렬

 

※ less, greater STL을 사용하기 위해서 #include<functional> 을 사용

 

 

위의 예시 필요한 헤더 포함해주시고 사용하시면 되겠습니다.

 

사용자 정의 함수로 정렬하는 법은 다음 포스팅에서 진행 할께요 :)

728x90
반응형