최대 1 분 소요

sorting을 할때 C로 짜면 merge sort를 nlogn으로 확정되어서 사용했었는데 구현이 좀 걸려서 ㅡ.ㅡ;

stl의 sort를 사용하면 nlogn의 복잡도를 가지구 처리가 가능하다고 해서 사용하려고 한다.

기본적은 qsort와 구조는 같이 보인다.

//include algorithm

#include

using namespace std;

//기본 오름차순으로 정렬.

//변수가 배열일 경우

int a[10]={0,1,2,3,4,5,6,7,8,9};

sort(a, a+10);      //중요 : 시작주소와 마지막 주소+1까지 넣어야지만 a[0]~ [a9]까지 정렬을 한다.

sort(&a[0], &a[10]);  //  기본적으로 오름차순으로 정렬한다.

sort(start,end,grearter<자료형>())  // 내림차순 정렬

//특정 조건으로 정렬을 할 경우

bool compare(type a, type b)

{

return a<b;   //오름차순   내림차순은 a>b;

}

sort(a, a+10, compare);

변수가 vector일 경우

vector v(10,10);

sort(v.begin(), v.end());

sort(v.begin(), v.end(). compare);

간단한 예제

#include <unordered_map>
#include <algorithm>
#include <vector>
#include <stdio.h>
using namespace std;
 
void main()
{
    int a[10] = { 8,7,4,6,7,1,0,8,4,5 };
    printf("before sort :");
    for (int i = 0; i < 10; i++)
        printf("%d ", a[i]);
 
    sort(a, a + 10);
    printf("\n after sort :");
    for (int i = 0; i < 10; i++)
        printf("%d ", a[i]);
}
 

ref : https://leeeegun.tistory.com/5

https://m.blog.naver.com/ndb796/221227975229

\