>  기사  >  백엔드 개발  >  C++의 정렬 기능에 대한 자세한 설명

C++의 정렬 기능에 대한 자세한 설명

WBOY
WBOY원래의
2023-11-18 15:51:151199검색

C++의 정렬 기능에 대한 자세한 설명

C++의 정렬 함수는 배열이나 컨테이너의 요소를 정렬하는 데 사용되는 함수 함수입니다. 정렬은 오름차순, 내림차순이 가능하며, 정수형, 부동소수점형, 문자형 등 다양한 형태의 데이터를 정렬할 수 있습니다. C++ 언어는 다양한 정렬 기능을 제공합니다. 이 기사에서는 이러한 정렬 기능의 사용법과 특징을 자세히 소개합니다.

  1. sort() 함수

sort() 함수는 C++ STL에서 가장 일반적으로 사용되는 정렬 함수 중 하나입니다. 해당 함수는 배열이나 컨테이너의 요소를 정렬하는 것입니다. sort() 함수의 기본 사용법은 다음과 같습니다.

sort(begin, end);

여기서 Begin은 배열 또는 컨테이너의 첫 번째 요소 주소이고, end는 마지막 요소의 주소 + 1이므로 end는 배열 또는 컨테이너의 빈 주소를 가리킵니다. 마지막 요소. sort() 함수는 기본적으로 오름차순으로 정렬합니다. 내림차순으로 정렬해야 하는 경우 함수 포인터나 람다 식을 세 번째 매개 변수로 전달할 수 있습니다.

다음은 sort() 함수를 사용하여 정수 배열을 정렬하는 방법을 보여주는 샘플 코드입니다.

#include <iostream>
#include <algorithm>

using namespace std;

int main()
{
    int arr[] = {5, 2, 9, 1, 4, 3, 8, 6, 7};
    int n = sizeof(arr) / sizeof(arr[0]);

    sort(arr, arr + n);

    for (int i = 0; i < n; i++)
    {
        cout << arr[i] << " ";
    }

    return 0;
}

위 코드를 실행한 결과는 다음과 같습니다.

1 2 3 4 5 6 7 8 9
  1. stable_sort() 함수

stable_sort () 함수와 sort( ) 함수는 유사하지만 정렬 후에도 동일한 값을 가진 요소의 상대 위치가 변경되지 않도록 보장합니다. stable_sort() 함수의 사용법은 sort() 함수와 유사하며 함수 포인터나 람다 표현식을 세 번째 매개변수로 전달할 수도 있습니다. 다음은 샘플 코드입니다.

#include <iostream>
#include <algorithm>

using namespace std;

int main()
{
    int arr[] = {5, 2, 9, 1, 4, 3, 8, 6, 7};
    int n = sizeof(arr) / sizeof(arr[0]);

    stable_sort(arr, arr + n);

    for (int i = 0; i < n; i++)
    {
        cout << arr[i] << " ";
    }

    return 0;
}

위 코드를 실행한 결과는 다음과 같습니다.

1 2 3 4 5 6 7 8 9
  1. partial_sort() 함수

partial_sort() 함수는 배열이나 컨테이너의 요소를 부분적으로 정렬할 수 있습니다. 배열의 가장 작은 상위 k개 요소를 앞에 정렬합니다(또는 가장 큰 상위 k개 요소를 배열 앞에 정렬합니다). 사용법은 다음과 같습니다:

partial_sort(begin, middle, end);

여기서 시작은 배열 또는 컨테이너의 첫 번째 요소의 주소이고, 끝은 마지막 요소의 주소 + 1이며, 중간은 k번째 요소를 가리키는 반복자입니다. 부분 정렬() 함수는 처음 k개 요소의 순서만 보장하고 나머지 요소의 순서는 정의되지 않는다는 점에 유의해야 합니다. 다음은 샘플 코드입니다.

#include <iostream>
#include <algorithm>

using namespace std;

int main()
{
    int arr[] = {5, 2, 9, 1, 4, 3, 8, 6, 7};
    int n = sizeof(arr) / sizeof(arr[0]);

    int k = 3;

    partial_sort(arr, arr + k, arr + n);

    for (int i = 0; i < k; i++)
    {
        cout << arr[i] << " ";
    }

    return 0;
}

위 코드를 실행한 결과는 다음과 같습니다.

1 2 3
  1. nth_element() 함수

nth_element() 함수는 k번째로 작은(또는 k번째로 큰) 요소를 선택하는 데 사용됩니다. 배열 또는 컨테이너를 배열의 k번째 위치에 배열합니다. 사용법은 다음과 같습니다:

nth_element(begin, middle, end);

여기서 시작은 배열 또는 컨테이너의 첫 번째 요소의 주소이고, 끝은 마지막 요소의 주소 + 1이며, 중간은 k번째 요소를 가리키는 반복자입니다. nth_element() 함수는 배열의 처음 k개 요소의 순서만 보장하고 k번째 요소는 정렬되지 않음을 보장한다는 점에 유의해야 합니다. 다음은 샘플 코드입니다.

#include <iostream>
#include <algorithm>

using namespace std;

int main()
{
    int arr[] = {5, 2, 9, 1, 4, 3, 8, 6, 7};
    int n = sizeof(arr) / sizeof(arr[0]);

    int k = 3;

    nth_element(arr, arr + k - 1, arr + n);

    cout << "第 " << k << " 小的数是:" << arr[k - 1] << endl;

    return 0;
}

위 코드를 실행한 결과는 다음과 같습니다.

第 3 小的数是:3
  1. make_heap() 함수

make_heap() 함수는 배열이나 컨테이너를 힙으로 변환할 수 있습니다. 배열의 요소는 힙 작업을 지원하도록 정렬된 이진 힙 규칙을 따릅니다. 사용법은 다음과 같습니다:

make_heap(begin, end);

여기서 Begin은 배열 또는 컨테이너의 첫 번째 요소 주소이고 end는 마지막 요소의 주소 + 1입니다. 다음은 샘플 코드입니다.

#include <iostream>
#include <algorithm>

using namespace std;

int main()
{
    int arr[] = {5, 2, 9, 1, 4, 3, 8, 6, 7};
    int n = sizeof(arr) / sizeof(arr[0]);

    make_heap(arr, arr + n);

    for (int i = 0; i < n; i++)
    {
        cout << arr[i] << " ";
    }

    return 0;
}

위 코드를 실행한 결과는 다음과 같습니다.

9 7 8 6 4 3 5 1 2
  1. push_heap() 함수

push_heap() 함수는 힙에 새 요소를 삽입하고 구조를 다시 조정할 수 있습니다. 힙 특성을 만족시키는 힙입니다. 사용법은 다음과 같습니다.

push_heap(begin, end);

여기서 시작은 배열 또는 컨테이너의 첫 번째 요소 주소이고 end는 마지막 요소의 주소입니다. 삽입된 새 요소는 힙의 마지막 위치에 배치되어야 한다는 점에 유의하세요. 다음은 샘플 코드입니다.

#include <iostream>
#include <algorithm>

using namespace std;

int main()
{
    int arr[] = {5, 2, 9, 1, 4, 3, 8, 6, 7};
    int n = sizeof(arr) / sizeof(arr[0]);

    make_heap(arr, arr + n);

    arr[n] = 0;

    push_heap(arr, arr + n + 1);

    for (int i = 0; i < n + 1; i++)
    {
        cout << arr[i] << " ";
    }

    return 0;
}

위 코드를 실행한 결과는 다음과 같습니다.

9 7 8 6 4 3 5 1 2 0
  1. pop_heap() 함수

pop_heap() 함수는 힙의 최상위 요소를 팝하고 다시 조정하는 데 사용됩니다. 힙의 성격에 맞는 힙의 구조. 사용법은 다음과 같습니다.

pop_heap(begin, end);

여기서 시작은 배열 또는 컨테이너의 첫 번째 요소 주소이고 끝은 마지막 요소의 주소입니다. 힙의 최상위 요소를 팝한 후에는 힙의 크기가 1만큼 줄어들어야 합니다. 다음은 샘플 코드입니다.

#include <iostream>
#include <algorithm>

using namespace std;

int main()
{
    int arr[] = {5, 2, 9, 1, 4, 3, 8, 6, 7};
    int n = sizeof(arr) / sizeof(arr[0]);

    make_heap(arr, arr + n);

    pop_heap(arr, arr + n);

    n--;

    for (int i = 0; i < n; i++)
    {
        cout << arr[i] << " ";
    }

    return 0;
}

위 코드를 실행한 결과는 다음과 같습니다.

8 7 5 6 4 3 2 1
  1. sort_heap() 함수

sort_heap() 함수는 힙을 정렬하고 정렬된 배열이 있는지 확인하는 데 사용됩니다. 오름차순. 사용법은 다음과 같습니다.

sort_heap(begin, end);

여기서 시작은 배열 또는 컨테이너의 첫 번째 요소 주소이고 끝은 마지막 요소의 주소입니다. sort_heap() 함수는 힙을 정렬하기 전에 먼저 pop_heap() 함수를 호출하여 힙의 최상위 요소를 팝하므로 정렬된 배열의 크기를 1만큼 줄여야 합니다. 다음은 샘플 코드입니다.

#include <iostream>
#include <algorithm>

using namespace std;

int main()
{
    int arr[] = {5, 2, 9, 1, 4, 3, 8, 6, 7};
    int n = sizeof(arr) / sizeof(arr[0]);

    make_heap(arr, arr + n);

    sort_heap(arr, arr + n);

    for (int i = 0; i < n; i++)
    {
        cout << arr[i] << " ";
    }

    return 0;
}

위 코드를 실행한 결과는 다음과 같습니다.

1 2 3 4 5 6 7 8 9

Summary

이 글에서는 sort(), stable_sort(), 부분 정렬() 등 C++에서 흔히 사용되는 정렬 함수를 자세히 소개합니다. ), nth_element(), make_heap(), push_heap(), pop_heap() 및 sort_heap() 함수. 이러한 각 정렬 기능은 고유한 특성을 가지며 다양한 정렬 요구 사항을 충족할 수 있습니다. 실제 프로그래밍에서는 특정 상황에 따라 적절한 정렬 기능을 선택하는 것이 매우 중요합니다.

위 내용은 C++의 정렬 기능에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.