C ++에서 정렬 기능을 구현하는 방법?



이 기사는 C ++의 Sort 함수를 탐색하는 데 도움이되며 프로세스에서 개념에 대한 자세한 데모를 제공합니다.

정렬 데이터에 적용되는 가장 기본적이고 유용한 기능 중 하나입니다. 요구 사항에 따라 증가 또는 감소 할 수있는 특정 방식으로 데이터를 배열하는 것을 목표로합니다. C ++ STL에는 정렬 알고리즘을 쉽게 수행 할 수 있도록‘sort ()’라는 이름의 내장 함수가 있습니다. 이 기사에서는 C ++의 Sort Function을 살펴 보겠습니다.

이 기사에서는 다음과 같은 포인터를 다룰 것입니다.





C ++의 정렬 함수에 대한이 기사로 이동

종류 ( ) 함수

지정된 순서로 배열, 벡터와 같은 컨테이너를 정렬하는 데 사용되는 알고리즘 헤더 파일의 내장 함수입니다. 내부적으로이 기능은 Quick-sort로 구현됩니다.
Quicksort는 분할 및 정복 알고리즘입니다. Quicksort는 먼저 큰 요소 목록을 두 개의 작은 하위 목록, 즉 하위 요소와 상위 요소로 나눕니다. 그런 다음 Quicksort는 하위 목록을 재귀 적으로 정렬합니다.



단계는 다음과 같습니다.
1. 목록에서 피벗이라고하는 임의의 요소 (일반적으로 마지막 요소)를 선택합니다.
2. 피벗보다 작은 값을 가진 모든 요소가 피벗보다 먼저 나오고 피벗보다 큰 값을 가진 모든 요소가 그 뒤에오고 동일한 값이 어느 방향 으로든 갈 수 있도록하는 방식으로 목록을 재정렬합니다.이 프로세스를 파티션 작업이라고합니다.
3. 작은 요소의 하위 목록과 큰 요소의 하위 목록을 재귀 적으로 정렬하고 다시 하위 목록에서 피벗을 선택하고 나누십시오.
재귀의 기본 사례는 크기가 0 또는 1 인 목록으로, 정렬 할 필요가 없으므로이를 결합하여 목록을 정렬합니다.

초보자를위한 sas 프로그래밍 튜토리얼

Quicksort는 실제로 Insertion Sort 또는 Bubble sort와 같은 다른 O (n log n) 알고리즘보다 빠릅니다. Quicksort는 전체 정렬이 O (log n) 추가 공간만으로 수행 될 수 있음을 의미하는 in-place 파티셔닝 알고리즘으로 구현 될 수 있습니다. Quicksort는 안정적인 정렬이 아닙니다.
복잡성은 다음과 같습니다.
모범 사례 – O (n log n)
최악의 경우 – O (n ^ 2)
평균 사례 – O (n log n)

통사론:
정렬 (첫 ​​번째, 마지막)
여기,
first – 정렬 할 범위에서 첫 번째 요소의 인덱스 (포인터)입니다.
last – 정렬 할 범위에서 마지막 요소의 인덱스 (포인터)입니다.
예를 들어 배열 'arr'의 요소를 1부터 10까지 정렬하고 싶다면 sort (arr, arr + 10)를 사용하고 10 개의 요소를 오름차순으로 정렬합니다.
반환 값
없음



복잡성

정렬 복잡성의 평균은 N * log2 (N)입니다. 여기서 N = 마지막 – 처음입니다.

데이터 범위
[첫 번째, 마지막] 범위의 개체가 수정됩니다.

예외
ExecutionPolicy라는 이름의 템플릿 매개 변수가있는 오버로드는 다음과 같이 오류를보고합니다.
알고리즘이 메모리 할당에 실패하면 std :: bad_alloc이 예외로 발생합니다.
알고리즘의 일부로 함수를 실행하면 std :: terminate 예외가 발생합니다.

C ++의 정렬 함수에 대한이 기사로 이동

예 – 데이터를 오름차순으로 정렬하려면 :

#include using namespace std int main () {int array [] = {10, 35, 85, 93, 62, 77, 345, 43, 2, 10} int n = sizeof (array) / sizeof (array [0] ) // 'sizeof'는 전체 배열의 크기, 즉 각 문자의 크기를 나타냅니다. * no. 문자 수 // 그래서 no를 얻습니다. 문자 수 // sizeof (array)를 배열의 한 문자 크기로 나눕니다. // 여기서는 array [0] sort (array, array + n) cout<< 'nArray after sorting using ' 'default sort is : n' for (int i = 0 i < n ++i) cout << array[i] << ' ' return 0 } 

출력 :

출력-C ++의 정렬 기능-Edureka

설명

위의 예에서 sort () 함수는 기본적으로 배열을 오름차순으로 정렬합니다.

C ++의 정렬 함수에 대한이 기사로 이동

예 – 데이터를 내림차순으로 정렬하려면 :

배열의 데이터를 내림차순으로 정렬하려면 요소가 정렬되는 순서를 지정하는 데 사용되는 세 번째 매개 변수를 도입해야합니다. 'greater ()'함수를 사용하여 데이터를 내림차순으로 정렬 할 수 있습니다.

#include using namespace std int main () {int array [] = {41, 53, 4, 459, 60, 7, 23, 4, 232, 10} int n = sizeof (array) / sizeof (array [0] ) sort (array, array + n, greater ()) cout<< 'Array after sorting : n' for (int i = 0 i < n ++i) cout << array[i] << ' ' return 0 } 

산출:

특급국가
여기서 sort () 함수는 더 큰 요소를 앞에 놓는 방식으로 비교를 수행합니다.

자바에서 임의의 문자열을 만드는 방법

C ++의 정렬 함수에 대한이 기사로 이동

부분 _ 정렬

C ++ STL은 부분 정렬 함수를 제공합니다.이 함수는 sort () 함수와 유사하지만 sort () 함수와 달리 전체 범위를 정렬하는 데 사용되지 않고 하위 부분 만 정렬하는 데 사용됩니다. 중간 요소 앞의 요소는 오름차순으로 정렬되고 중간 요소 다음의 요소는 그대로 남는 방식으로 [첫 번째, 마지막) 범위의 요소를 정렬합니다.

함수 객체를 사용하여 첫 번째 위치를 정렬하는 경우 가장 큰 요소를 찾는 데 사용할 수 있습니다.

#include #include #include using namespace std int main () {vector vec = {10, 45, 60, 78, 23, 21, 30} vector :: iterator iptr partial_sort (vec.begin (), vec.begin () + 1, vec.end (), greater ()) iptr = vec.begin () cout<< 'The largest element is = ' << *iptr return 0 } 

산출:

설명:
위의 코드는 시리즈에서 가장 큰 수를 찾는 데 사용할 수 있으며, 더 큰 명령을 제거하면되는 시리즈에서 가장 작은 수를 찾는 데 사용할 수 있습니다.

따라서 우리는 'C ++의 정렬 기능'에 대한이 기사를 끝냈습니다. 자세한 내용은 신뢰할 수있는 온라인 학습 회사 인 Edureka의 Java Training을 확인하십시오. 에두 레카 코스는 Hibernate & Spring과 같은 다양한 Java 프레임 워크와 함께 핵심 및 고급 Java 개념 모두에 대해 교육하도록 설계되었습니다.

질문이 있으십니까? 이 블로그의 댓글 섹션에 언급 해 주시면 가능한 한 빨리 답변을 드리겠습니다.