첫 번째 요소로 배열 배열을 정렬하는 방법은 무엇입니까?
[[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 중국어 웹사이트의 기타 관련 기사를 참조하세요!