>백엔드 개발 >C++ >원본 인덱스를 추적하는 동안 C에서 데이터를 어떻게 정렬할 수 있습니까?

원본 인덱스를 추적하는 동안 C에서 데이터를 어떻게 정렬할 수 있습니까?

Barbara Streisand
Barbara Streisand원래의
2025-01-03 12:54:40177검색

How Can I Sort Data in C   While Tracking Original Indices?

C에서 인덱스 추적을 사용한 정렬

원본 인덱스를 보존하면서 데이터를 정렬하는 것은 데이터 분석 및 조작에서 일반적인 작업입니다. C에서 이를 달성하려면 몇 가지 신중한 프로그래밍 기술이 필요합니다.

원본 인덱스를 추적하면서 샘플 시퀀스를 오름차순으로 정렬하려면 람다 표현식과 표준 라이브러리를 활용할 수 있습니다. 아래의 sort_indexes 함수는 이 접근 방식을 보여줍니다.

template <typename T>
vector<size_t> sort_indexes(const vector<T> &v) {
  // Initialize original index locations
  vector<size_t> idx(v.size());
  iota(idx.begin(), idx.end(), 0);

  // Sort indexes based on values in v using std::stable_sort to maintain original order for equal values
  stable_sort(idx.begin(), idx.end(),
    [&v](size_t i1, size_t i2) { return v[i1] < v[i2]; });

  return idx;
}

이 함수는 후속 반복에서 사용할 수 있는 인덱스 벡터를 반환합니다.

for (auto i : sort_indexes(v)) {
  cout << v[i] << endl;
}

정렬 함수를 제공하도록 사용자 정의할 수 있습니다. 비교기 또는 sort_indexes 함수 내에서 원래 벡터의 자동 재정렬.

위 내용은 원본 인덱스를 추적하는 동안 C에서 데이터를 어떻게 정렬할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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