목차
배열의 반전 횟수
백엔드 개발 C++ 배열의 역로그를 계산하기 위해 병합 정렬 알고리즘을 사용하여 작성된 C/C++ 프로그램이 있습니까?

배열의 역로그를 계산하기 위해 병합 정렬 알고리즘을 사용하여 작성된 C/C++ 프로그램이 있습니까?

Sep 17, 2023 pm 11:25 PM
정렬 병합 정렬 역순 쌍

주어진 배열을 정렬하는 동안 발생하는 반전 횟수를 반전 횟수라고 합니다. 역 문제는 병합 정렬 알고리즘을 사용하여 풀 수 있는 고전적인 문제입니다. 이 문제 v에서는 왼쪽에 있는 요소 중 그보다 큰 모든 요소의 수를 계산하고 그 수를 출력에 추가합니다. 이 논리는 병합 정렬의 병합 기능에서 완성됩니다.

이 주제를 더 잘 이해하기 위해 예를 들어 보겠습니다. 병합 프로세스에 관련된 두 개의 하위 배열을 고려해 보겠습니다.

배열의 역로그를 계산하기 위해 병합 정렬 알고리즘을 사용하여 작성된 C/C++ 프로그램이 있습니까?

배열의 역로그를 계산하기 위해 병합 정렬 알고리즘을 사용하여 작성된 C/C++ 프로그램이 있습니까?

배열의 역로그를 계산하기 위해 병합 정렬 알고리즘을 사용하여 작성된 C/C++ 프로그램이 있습니까?

배열의 역로그를 계산하기 위해 병합 정렬 알고리즘을 사용하여 작성된 C/C++ 프로그램이 있습니까?

Input: arr[] = { 1, 9, 6, 4, 5}
Output: Inversion count is 5
로그인 후 복사
배열의 역로그를 계산하기 위해 병합 정렬 알고리즘을 사용하여 작성된 C/C++ 프로그램이 있습니까?설명

배열의 반전 횟수

제공 n 배열, 그 역함수 찾기 턴 수. (i < j) 및 (A[i] > A[j])인 경우 쌍 (i, j)를 배열 A의 역전이라고 합니다. 우리는 arr

에서 이러한 모든 쌍을 계산해야 합니다. 예를 들어

< p> 배열

(9,6), (9,4), (9,5), (6,4), (6)에는 5개의 반전이 있습니다. ,5)

1. 요소의 값을 서로 비교해보세요.

2. 낮은 인덱스의 값이 더 높으면 카운터를 증가시킵니다.

3. 결과를 표시합니다.

#include <stdio.h>
int Merge(int arr[], int aux[], int low, int mid, int high) {
   int k = low, i = low, j = mid + 1;
   int inversionCount = 0;
   while (i <= mid && j <= high) {
      if (arr[i] <= arr[j]) {
         aux[k++] = arr[i++];
      } else {
         aux[k++] = arr[j++];
         inversionCount += (mid - i + 1); // NOTE
      }
   }
   while (i <= mid)
   aux[k++] = arr[i++];
   for (int i = low; i <= high; i++)
      arr[i] = aux[i];
   return inversionCount;
}
int MergeSort(int arr[], int aux[], int low, int high) {
   if (high == low) // if run size == 1
      return 0;
   int mid = (low + ((high - low) >> 1));
   int inversionCount = 0;
   inversionCount += MergeSort(arr, aux, low, mid);
   inversionCount += MergeSort(arr, aux, mid + 1, high);
   inversionCount += Merge(arr, aux, low, mid, high);
   return inversionCount;
}
int main() {
   int arr[] = { 1, 9, 6, 4, 5 };
   int N = 5;
   int aux[N];
   for (int i = 0; i < N; i++)
      aux[i] = arr[i];
   printf("Inversion count is %d", MergeSort(arr, aux, 0, N - 1));
   return 0;
}
로그인 후 복사

위 내용은 배열의 역로그를 계산하기 위해 병합 정렬 알고리즘을 사용하여 작성된 C/C++ 프로그램이 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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

뜨거운 기사 태그

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

foreach 루프를 사용하여 PHP 배열에서 중복 요소를 제거하는 방법은 무엇입니까? foreach 루프를 사용하여 PHP 배열에서 중복 요소를 제거하는 방법은 무엇입니까? Apr 27, 2024 am 11:33 AM

foreach 루프를 사용하여 PHP 배열에서 중복 요소를 제거하는 방법은 무엇입니까?

PHP 배열 키 값 뒤집기: 다양한 방법의 성능 비교 분석 PHP 배열 키 값 뒤집기: 다양한 방법의 성능 비교 분석 May 03, 2024 pm 09:03 PM

PHP 배열 키 값 뒤집기: 다양한 방법의 성능 비교 분석

PHP 배열 다차원 정렬 연습: 간단한 시나리오부터 복잡한 시나리오까지 PHP 배열 다차원 정렬 연습: 간단한 시나리오부터 복잡한 시나리오까지 Apr 29, 2024 pm 09:12 PM

PHP 배열 다차원 정렬 연습: 간단한 시나리오부터 복잡한 시나리오까지

PHP 어레이 딥 카피(Array Deep Copy) 기술: 다양한 방법을 사용하여 완벽한 카피 달성 PHP 어레이 딥 카피(Array Deep Copy) 기술: 다양한 방법을 사용하여 완벽한 카피 달성 May 01, 2024 pm 12:30 PM

PHP 어레이 딥 카피(Array Deep Copy) 기술: 다양한 방법을 사용하여 완벽한 카피 달성

데이터 정렬에 PHP 배열 그룹화 기능 적용 데이터 정렬에 PHP 배열 그룹화 기능 적용 May 04, 2024 pm 01:03 PM

데이터 정렬에 PHP 배열 그룹화 기능 적용

PHP 배열 심층 복사 모범 사례: 효율적인 방법 발견 PHP 배열 심층 복사 모범 사례: 효율적인 방법 발견 Apr 30, 2024 pm 03:42 PM

PHP 배열 심층 복사 모범 사례: 효율적인 방법 발견

중복 요소를 찾는 데 있어 PHP 배열 그룹화 기능의 역할 중복 요소를 찾는 데 있어 PHP 배열 그룹화 기능의 역할 May 05, 2024 am 09:21 AM

중복 요소를 찾는 데 있어 PHP 배열 그룹화 기능의 역할

PHP 배열 병합 및 중복 제거 알고리즘: 병렬 솔루션 PHP 배열 병합 및 중복 제거 알고리즘: 병렬 솔루션 Apr 18, 2024 pm 02:30 PM

PHP 배열 병합 및 중복 제거 알고리즘: 병렬 솔루션

See all articles