> 백엔드 개발 > C++ > 본문

C의 첫 번째 요소를 기준으로 배열 배열을 정렬하는 방법은 무엇입니까?

Barbara Streisand
풀어 주다: 2024-11-21 19:05:13
원래의
921명이 탐색했습니다.

How to Sort an Array of Arrays by the First Element in C  ?

첫 번째 요소로 배열 배열을 정렬하는 방법은 무엇입니까?

[[4, 204와 같은 배열 배열이 있습니다. ], [10, 39], [1, 500]]. [[1, 500], [4, 204], [10, 39]]를 얻기 위해 하위 배열의 첫 번째 요소를 기준으로 정렬하려고 합니다. C에서 이를 수행하는 방법은 다음과 같습니다.

접근 방식: 배열 대신 인덱스 정렬

배열 자체를 정렬하는 대신 다음을 가리키는 인덱스 배열을 정렬할 수 있습니다. 원래 배열. 이 접근 방식은 각 하위 배열에 상당한 양의 데이터가 포함되어 있거나 원래 순서를 보존해야 하는 대규모 배열의 경우 더 효율적입니다.

1단계: 인덱스 배열 만들기

index라는 이름의 인덱스 배열을 초기화합니다. 여기서 인덱스 범위는 0부터 n-1까지입니다. 여기서 n은 인덱스 수입니다. subarrays.

2단계: 정렬 조건자 정의

인덱스 배열을 사용하여 하위 배열의 첫 번째 요소를 비교하는 정렬 조건자를 만듭니다. 인덱스 n1에 있는 하위 배열의 첫 번째 요소가 인덱스 n2에 있는 요소보다 작은 경우 조건자는 true를 반환해야 합니다.

bool compareFirstElement(int n1, int n2) {
  return timeTable[n1][0] < timeTable[n2][0];
}
로그인 후 복사

3단계: 인덱스 배열 정렬

std::sort 함수와 정의된 조건자를 사용하여 인덱스 배열을 정렬합니다. 이렇게 하면 하위 배열의 첫 번째 요소를 기준으로 인덱스가 오름차순으로 재정렬됩니다.

std::sort(index, index + 3, compareFirstElement);
로그인 후 복사

4단계: 정렬된 인덱스를 사용하여 데이터에 액세스

하려면 정렬된 데이터에 액세스하고, 정렬된 인덱스 배열을 사용하여 timeTable의 하위 배열을 가리킵니다. array.

for (int i = 0; i < 3; ++i) {
  std::cout << "The index is " << index[i] << ".  The data at this index is  [" << 
                 timeTable[index[i]][0] << " " << timeTable[index[i]][1] << "]\n";
}
로그인 후 복사

라이브 예시:

[라이브 예시](https://wandbox.org/permlink/sXTyuT2fubLi4j7i)

참고: 이 접근 방식은 객체 배열을 정렬하는 데에도 적용할 수 있습니다. 또는 정렬 가능한 데이터가 포함된 구조체.

위 내용은 C의 첫 번째 요소를 기준으로 배열 배열을 정렬하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿