Heim > Backend-Entwicklung > C++ > Umkehralgorithmus für die Array-Rotation, geschrieben in C++

Umkehralgorithmus für die Array-Rotation, geschrieben in C++

王林
Freigeben: 2023-08-28 23:13:06
nach vorne
1306 Leute haben es durchsucht

Umkehralgorithmus für die Array-Rotation, geschrieben in C++

In dem gegebenen Problem haben wir ein Array und müssen das Array mit einem Inversionsalgorithmus wie −

Input : arr[] = [1, 2, 3, 4, 5, 6, 7], d = 2
Output : arr[] = [3, 4, 5, 6, 7, 1, 2]
Explanation : As you can see we have to rotate this array by d = 2 but our main task is to achieve this by using a reversal technique.
Nach dem Login kopieren
um d Elemente drehen. Wir haben einige Berechnungen zur Drehung des Arrays mit der Inversionstechnik durchgeführt und Schlussfolgerung:

    Zuerst kehren wir die ersten d Elemente des Arrays um.
  • Zweitens invertieren wir die restlichen Elemente.
  • Drittens kehren wir das gesamte Array um.
Durch die Anwendung dieser drei Schritte können wir das gedrehte Array erhalten.

Lösungsmethode

In diesem Problem schreiben wir zunächst eine Funktion, die die Elemente umkehrt. Anschließend folgen wir den oben genannten Schritten.

Beispiel

#include <bits/stdc++.h>
using namespace std;

void reverseArray(int arr[], int start, int end) { // our reversal algorithm
   while (start < end) { // if start becomes equal to end we break the loop
      int temp = arr[start];
      arr[start] = arr[end];
      arr[end] = temp;
      start++;
      end--;
   }
   return ;
}
void Rotate(int arr[], int d, int n) { // rotation function
   if (d == 0) // no rotation required
      return;
   d = d % n; // when d becomes equal to n so our array comes to its original form
   reverseArray(arr, 0, d - 1); // reversing first d elements
   reverseArray(arr, d, n - 1); // reversing the remaining elements
   reverseArray(arr, 0, n - 1); // reversing the whole array

   return ;
}
int main() {
   int arr[] = { 1, 2, 3, 4, 5, 6, 7 }; // given array
   int n = sizeof(arr) / sizeof(arr[0]); // size of our array
   int d = 2;
   Rotate(arr, d, n);
   for(int i = 0; i < n; i++) // printing the array
      cout << arr[i] << " ";
   cout << "\n";
   return 0;
}
Nach dem Login kopieren

Ausgabe

3 4 5 6 7 1 2
Nach dem Login kopieren
Erläuterung des obigen Codes

In der obigen Methode erstellen wir zunächst eine Inversionstechnik, die drei Parameter akzeptiert, d. h. Array, Startindex und Endindex, und uns umwandelt. Das Array ist umgekehrt Startposition bis zur Endposition. Da wir den Algorithmus bereits entwickelt haben, werden wir diese Funktion verwenden, um den Algorithmus anzuwenden. Zuerst kehren wir die ersten d Elemente um. Dann kehren wir die verbleibenden Elemente um und schließlich kehren wir das gesamte Array um. Dadurch wird unser Array um d Positionen gedreht. In der Rotationsfunktion setzen wir d auf d % n. Denn wenn wir die ersten n Elemente des Arrays drehen, erhalten wir die gleiche Antwort wie zuvor, also nehmen wir d modulo n.

Fazit

In diesem Artikel haben wir ein Problem bei der Anwendung des Inversionsalgorithmus für die Array-Rotation gelöst. Wir haben auch ein C++-Programm und die vollständige (normale) Lösung dieses Problems kennengelernt. Wir können das gleiche Programm in anderen Sprachen wie C, Java, Python und anderen Sprachen schreiben. Ich hoffe, dieser Artikel ist hilfreich für Sie.

Das obige ist der detaillierte Inhalt vonUmkehralgorithmus für die Array-Rotation, geschrieben in C++. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:tutorialspoint.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage