[C++ STL] sort 정렬 함수 사용 방법 정리 (오름차순 & 내림차순)

2021. 5. 9. 14:28·Archive/C&C++
반응형

INFO

C++ STL 라이브러리의 algorithm 헤더는 sort 정렬 함수를 제공합니다.

sort 정렬 함수는 intro sort 정렬 알고리즘을 이용하는데 이는 quick sort 정렬 알고리즘을 기반으로 한 heap sort 와 insertion sort 를 혼합해 만든 알고리즘으로 최악의 경우에 n^2의 시간 복잡도를 가지는 quick sort의 단점을 보완하여 최악의 경우에도 nlogn의 시간 복잡도를 가지는 정렬 알고리즘 입니다.

PS에서 빈번하게 사용되는 함수이기에, 한 번 숙지해 두면 알고리즘 풀이에 큰 도움이 될 것 입니다.

 

#1 오름차순 정렬

- 1.1 벡터 오름차순 정렬 예제

- 1.2 배열 오름차순 정렬 예제

#2 내림차순 정렬

- 2.1 벡터 내림차순 정렬 예제

- 2.2 배열 내림차순 정렬 예제


#1 오름차순 정렬

- 1.1 벡터 오름차순 정렬 예제

sort 함수를 사용하기 위해선 <algorithm> 헤더를 선언해야 합니다. sort 함수를 벡터에서 사용하는 경우에는, sort(v.begin(),v.end()); 와 같이 begin(), end() 멤버함수를 이용합니다.

#include <iostream>
#include <algorithm> // sort()
#include <vector> // vector
using namespace std;

int main()
{
	vector<int> v;
	v.push_back(10);
	v.push_back(30);
	v.push_back(20);
	v.push_back(40);
	v.push_back(50);
	
	cout << "[Before Sort] ";
	for (int i = 0 ; i < v.size() ; i++)
	{
		cout << v[i] << " ";
	}
	
	sort(v.begin(),v.end()); // 오름차 정렬 
	
	cout << endl;
	cout << "[After Sort] ";
	for (int i = 0 ; i < v.size() ; i++)
	{
		cout << v[i] << " ";
	}
	
	return 0;
}
[Before Sort] 10 30 20 40 50
[After Sort] 10 20 30 40 50

 

- 1.2 배열 오름차순 정렬 예제

sort 함수를 배열에서 이용하는 경우에는, 첫 번째 인자에 배열의 포인터를 넣고 , 두 번째 인자에는 배열의 포인터 + 배열의 크기 값을 넣습니다. 따라서 다음과 같은 형태로 사용하면 됩니다. sort(arr,arr+n);

#include <iostream>
#include <algorithm> // sort()
using namespace std;

int main()
{
	int arr[5] = {10, 30, 20, 40, 50}; 
	cout << "[Before Sort] ";
	for (int i = 0 ; i < 5 ; i++)
	{ 
		cout << arr[i] << " ";
	}
	cout << endl;
	
	sort(arr,arr+5); // sort 오름차순 정렬 
	cout << "[After Sort] ";
	for (int i = 0 ; i < 5 ; i++)
	{
		cout << arr[i] << " ";
	}
	
	return 0;
}
[Before Sort] 10 30 20 40 50
[After Sort] 10 20 30 40 50

 

#2 내림차순 정렬

sort 함수를 이용해 벡터 혹은 배열의 원소를 내림차 정렬을 수행하기 위해서는, 세 번째 인자에 사용자 정의 함수를 넣어 주어야 합니다. 사용자 함수 (compare)의 형태는 다음과 같습니다. 

bool compare (int x, int y)
{
	return x > y;
}

나머지 코드는 오름차순 정렬과 동일하기에, 소스코드만 올려두고 따로 설명은 생략하도록 하겠습니다.

 

- 2.1 벡터 내림차순 정렬 예제

#include <iostream>
#include <algorithm> // sort()
#include <vector> // vector
using namespace std;

bool compare (int x, int y)
{
	return x > y;
}

int main()
{
	vector<int> v;
	v.push_back(10);
	v.push_back(30);
	v.push_back(20);
	v.push_back(40);
	v.push_back(50);
	
	cout << "[Before Sort] ";
	for (int i = 0 ; i < v.size() ; i++)
	{
		cout << v[i] << " ";
	}
	
	sort(v.begin(), v.end(), compare); // 내림차순 정렬 
	
	cout << endl;
	cout << "[After Sort] ";
	for (int i = 0 ; i < v.size() ; i++)
	{
		cout << v[i] << " ";
	}
	
	return 0;
}

 

- 2.2 배열 내림차순 정렬 예제

#include <iostream>
#include <algorithm> // sort()
using namespace std;

bool compare (int x, int y)
{
	return x > y;
}

int main()
{
	int arr[5] = {10, 30, 20, 40, 50}; 
	cout << "[Before Sort] ";
	for (int i = 0 ; i < 5 ; i++)
	{ 
		cout << arr[i] << " ";
	}
	cout << endl;
	
	sort(arr, arr+5, compare); // sort 내림차순 정렬 
	cout << "[After Sort] ";
	for (int i = 0 ; i < 5 ; i++)
	{
		cout << arr[i] << " ";
	}
	
	return 0;
}

 

반응형

'Archive > C&C++' 카테고리의 다른 글

[C++STL] max_element , min_element - 배열/벡터에서 최대,최소 찾기  (0) 2021.07.06
[C++ STL] Deque Container 사용 방법 & 관련 예제 총 정리  (0) 2021.05.10
[C++ STL] Queue Container 사용법 정리  (0) 2021.05.06
[C/C++] Queue(큐) 자료구조 정리  (1) 2021.05.06
[C++ STL] Pair Container 사용법 정리 (With Vector, Typedef, Sort)  (0) 2021.05.03
'Archive/C&C++' 카테고리의 다른 글
  • [C++STL] max_element , min_element - 배열/벡터에서 최대,최소 찾기
  • [C++ STL] Deque Container 사용 방법 & 관련 예제 총 정리
  • [C++ STL] Queue Container 사용법 정리
  • [C/C++] Queue(큐) 자료구조 정리
novs
novs
https://github.com/novvvv
  • novs
    nov.Zip
    novs
  • 전체
    오늘
    어제
    • All (381)
      • Project (2)
        • Rag Blog (2)
      • Spring Framework (27)
        • Java Fundamental (13)
        • SpringSecurity (1)
        • Multi Thread Programming (3)
        • Spring Framework (3)
        • JPA (4)
      • Security (2)
      • Cloud (2)
        • Docker (1)
        • AWS (1)
      • Mobile Development (0)
      • dev (7)
        • Git (2)
        • React (2)
        • Android (1)
        • Computer Science (2)
      • Algorithm (29)
        • PS With C++ (8)
        • Algorithm (2)
        • BOJ (16)
        • AtCoder (3)
      • Archive (312)
        • 동아리 사이트 개발일지 (3)
        • 카페 주문 시스템 (3)
        • UIKit (2)
        • Swift Language (3)
        • PS With Swift (2)
        • Next.js (3)
        • React (2)
        • Git (1)
        • Linux (3)
        • Vue.js (2)
        • Flutter (11)
        • ...2022 (34)
        • ...2024 (2)
        • C# (14)
        • C&C++ (47)
        • GameDevelop (19)
        • WEB (32)
        • CS (7)
        • Algorithm (13)
        • ProblemSolving (105)
        • Daily (2)
  • 블로그 메뉴

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    C
    STL
    소스코드
    C++문법
    깃
    백준
    코딩테스트
    문제풀이
    유니티
    자료구조
    c#
    그리디
    HTML
    sort
    안드로이드스튜디오
    프로그래머스
    BFS
    자바스크립트
    알고리즘
    javascript
    BOJ
    dp
    C++
    다이나믹프로그래밍
    js
    스택
    고득점키트
    깃허브
    C언어
    객체지향
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
novs
[C++ STL] sort 정렬 함수 사용 방법 정리 (오름차순 & 내림차순)
상단으로

티스토리툴바