Table des matières
Explication
Exemple
Maison développement back-end C++ Programme C/C++ écrit à l'aide d'un algorithme de tri par fusion pour calculer le logarithme inverse dans un tableau ?

Programme C/C++ écrit à l'aide d'un algorithme de tri par fusion pour calculer le logarithme inverse dans un tableau ?

Sep 17, 2023 pm 11:25 PM
数组 归并排序 paire d'ordre inverse

Le décompte d’inversion qui se produit lors du tri d’un tableau donné est appelé décompte d’inversion. Le problème inverse est un problème classique qui peut être résolu à l’aide de l’algorithme de tri par fusion. Dans ce problème v, nous compterons tous les éléments à sa gauche qui sont supérieurs à lui et ajouterons le nombre à la sortie. Cette logique est complétée dans la fonction de fusion du tri par fusion.

Pour mieux comprendre ce sujet, prenons un exemple. Considérons les deux sous-tableaux impliqués dans le processus de fusion -

Programme C/C++ écrit à laide dun algorithme de tri par fusion pour calculer le logarithme inverse dans un tableau ?

Programme C/C++ écrit à laide dun algorithme de tri par fusion pour calculer le logarithme inverse dans un tableau ?

Programme C/C++ écrit à laide dun algorithme de tri par fusion pour calculer le logarithme inverse dans un tableau ?

Programme C/C++ écrit à laide dun algorithme de tri par fusion pour calculer le logarithme inverse dans un tableau ?

Programme C/C++ écrit à l'aide d'un algorithme de tri par fusion pour calculer le logarithme inverse dans un tableau ?

Input: arr[] = { 1, 9, 6, 4, 5}
Output: Inversion count is 5
Copier après la connexion

Explication

Nombre d'inversions d'un tableau

Donner n un tableau, trouver son inverse Nombre de tours. Si (i < j) et (A[i] > A[j]) alors la paire (i, j) est appelée l'inversion du tableau A. Nous devons compter toutes ces paires dans arr

< p> Par exemple, il y a 5 inversions dans

tableau

(9,6), (9,4), (9,5), (6,4), (6 ,5)

1. Comparez les valeurs des éléments entre eux.

2. Si la valeur à l'index inférieur est plus élevée, incrémentez le compteur.

3. Affichez les résultats.

Exemple

#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;
}
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Article chaud

Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Article chaud

Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Tags d'article chaud

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment supprimer les éléments en double du tableau PHP à l'aide de la boucle foreach ? Comment supprimer les éléments en double du tableau PHP à l'aide de la boucle foreach ? Apr 27, 2024 am 11:33 AM

Comment supprimer les éléments en double du tableau PHP à l'aide de la boucle foreach ?

Inversion des valeurs clés du tableau PHP : analyse comparative des performances de différentes méthodes Inversion des valeurs clés du tableau PHP : analyse comparative des performances de différentes méthodes May 03, 2024 pm 09:03 PM

Inversion des valeurs clés du tableau PHP : analyse comparative des performances de différentes méthodes

Pratique du tri multidimensionnel des tableaux PHP : des scénarios simples aux scénarios complexes Pratique du tri multidimensionnel des tableaux PHP : des scénarios simples aux scénarios complexes Apr 29, 2024 pm 09:12 PM

Pratique du tri multidimensionnel des tableaux PHP : des scénarios simples aux scénarios complexes

L'art de PHP Array Deep Copy : utiliser différentes méthodes pour obtenir une copie parfaite L'art de PHP Array Deep Copy : utiliser différentes méthodes pour obtenir une copie parfaite May 01, 2024 pm 12:30 PM

L'art de PHP Array Deep Copy : utiliser différentes méthodes pour obtenir une copie parfaite

Application de la fonction de regroupement de tableaux PHP dans le tri des données Application de la fonction de regroupement de tableaux PHP dans le tri des données May 04, 2024 pm 01:03 PM

Application de la fonction de regroupement de tableaux PHP dans le tri des données

Meilleures pratiques pour la copie approfondie des tableaux PHP : découvrez des méthodes efficaces Meilleures pratiques pour la copie approfondie des tableaux PHP : découvrez des méthodes efficaces Apr 30, 2024 pm 03:42 PM

Meilleures pratiques pour la copie approfondie des tableaux PHP : découvrez des méthodes efficaces

Le rôle de la fonction de regroupement de tableaux PHP dans la recherche d'éléments en double Le rôle de la fonction de regroupement de tableaux PHP dans la recherche d'éléments en double May 05, 2024 am 09:21 AM

Le rôle de la fonction de regroupement de tableaux PHP dans la recherche d'éléments en double

Algorithme de fusion et de déduplication de tableaux PHP : solution parallèle Algorithme de fusion et de déduplication de tableaux PHP : solution parallèle Apr 18, 2024 pm 02:30 PM

Algorithme de fusion et de déduplication de tableaux PHP : solution parallèle

See all articles