


JavaScript-Programm für den Blockaustauschalgorithmus für die Array-Rotation
Durch Drehen von Array-Elementen werden die Elemente eines bestimmten Arrays um eine bestimmte Anzahl von Positionen nach links oder rechts verschoben. Wir gehen davon aus, dass das Array die Form einer Schleife hat und drehen die Elemente von der Kante zum anderen Ende. Der Block-Swap-Algorithmus für die Array-Rotation bedeutet, dass die Elemente des Arrays um einen bestimmten Betrag gedreht werden. Anstelle von Drehungen wird jedoch eine Austauschtechnik verwendet. Wir werden rekursive und iterative Methoden implementieren.
Eintreten
The given array is [ 1, 2, 3, 4, 5, 6, 7]. The number of rotations by which we have to rotate is 3.
Ausgabe
[4, 5, 6, 7, 1, 2, 3]
Anleitung
Wir können den Austauschalgorithmus verwenden und das Ergebnis erhalten. Wir werden es im nächsten Abschnitt implementieren.
Rekursive Methode
Bei dieser Methode versuchen wir anzunehmen, dass wir zwei Arrays haben, das erste hat die Größe der angegebenen Anzahl von Drehungen und das andere die Größe der Gesamtgröße minus der angegebenen Anzahl von Elementen.
Wenn die Größe des ersten Arrays klein ist, tauschen wir die Elemente des ersten Arrays aus und das letzte Element entspricht der Größe des ersten Arrays. Wenn die Größe des ersten Arrays größer ist, tauschen wir die Elemente aus Das erste Array entspricht der Größe des zweiten Arrays des angegebenen Arrays.
Für die verbleibenden Elemente rufen wir die rekursive Funktion auf, indem wir das Swap-Array ändern.
Beispiel
function swap(arr, st, si, k){ // function to traverse over the array and swap the elements for(var i = 0; i < k; i++) { var temp = arr[st + i]; arr[st + i] = arr[si + i]; arr[si + i] = temp; } return arr; } function rotate(arr, k, n){ // if the number of rotations is zero or equal to the size of array // in this case we don't have to rotate the array if(k == 0 || k == n){ return; } // special case when the number of elements to rotate // is half of the size of the given array if(n == 2*k){ arr = swap(arr, 0, n - k, k); return; } // if the first part is short if(2*k < n) { arr = swap(arr, 0, n - k, k); rotate(arr, k, n - k); } else{ // if second part is short arr = swap(arr, 0, k, n - k); rotate(arr + n - k, 2 * k - n, k); } } // function to print the given array function print(arr){ var temp = ""; for(var i = 0; i < arr.length; i++){ temp += arr[i] + " "; } console.log(temp); } //Defining the array var arr = [1, 2, 3, 4, 5, 6, 7]; var num = 3; console.log("The given array is: "); print(arr); // rotating the array rotate(arr, num, arr.length); console.log("The given array after " + num + " number of rotations is: ") print(arr);
Zeitliche und räumliche Komplexität
Die zeitliche Komplexität des obigen Codes beträgt N, wobei N die Größe des angegebenen Arrays ist.
Der obige Code hat eine Raumkomplexität von N, aber das gilt nur, wenn wir den vom rekursiven Stapel belegten Speicher berücksichtigen.
Iterative Methode
Die iterative Methode ist die gleiche wie die rekursive Methode, der einzige Unterschied besteht darin, dass wir in einer While-Schleife arbeiten, anstatt rekursive Aufrufe zu verwenden. Schauen wir uns den Code an.
Beispiel
function swap(arr, st, si, k){ // function to traverse over the array and swap the elements for(var i = 0; i < k; i++) { var temp = arr[st + i]; arr[st + i] = arr[si + i]; arr[si + i] = temp; } return arr; } function rotate(arr, k, n){ // if the number of rotations is zero or equal to the size of array // in this case we don't have to rotate the array if(k == 0 || k == n){ return; } var i = k; var j = n - k; while (i != j){ if(i < j){ // if the first array is shorter arr = swap(arr, k - i, k + j - i, i); j -= i; } else{ // if the second array is shorter arr = swap(arr, k - i, k, j); i -= j; } } arr = swap(arr, k - i, k, i); } // function to print the given array function print(arr){ var temp = ""; for(var i = 0; i < arr.length; i++){ temp += arr[i] + " "; } console.log(temp); } // defining the array var arr = [1, 2, 3, 4, 5, 6, 7]; var num = 3; console.log("The given array is: "); print(arr); // rotating the array rotate(arr, num, arr.length); console.log("The given array after " + num + " number of rotations is: ") print(arr);
Zeitliche und räumliche Komplexität
Die zeitliche Komplexität des obigen Codes beträgt N, wobei N die Größe des angegebenen Arrays ist.
Die Speicherplatzkomplexität des obigen Codes ist 1 oder konstant, da wir hier keinen zusätzlichen Speicherplatz verwenden.
Fazit
In diesem Tutorial haben wir ein JavaScript-Programm implementiert, um ein Array mithilfe des Block-Swap-Algorithmus um eine bestimmte Anzahl von Drehungen zu drehen. Wir haben den Blockaustauschalgorithmus mithilfe eines iterativen Ansatzes mit O(N)-Zeit und O(1)-Raumkomplexität implementiert, während wir einen rekursiven Ansatz mit O(N)-Raumkomplexität verwendet haben.
Das obige ist der detaillierte Inhalt vonJavaScript-Programm für den Blockaustauschalgorithmus für die Array-Rotation. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Häufig gestellte Fragen und Lösungen für das Ticket-Ticket-Ticket-Ticket in Front-End im Front-End-Entwicklungsdruck ist der Ticketdruck eine häufige Voraussetzung. Viele Entwickler implementieren jedoch ...

Es gibt kein absolutes Gehalt für Python- und JavaScript -Entwickler, je nach Fähigkeiten und Branchenbedürfnissen. 1. Python kann mehr in Datenwissenschaft und maschinellem Lernen bezahlt werden. 2. JavaScript hat eine große Nachfrage in der Entwicklung von Front-End- und Full-Stack-Entwicklung, und sein Gehalt ist auch beträchtlich. 3. Einflussfaktoren umfassen Erfahrung, geografische Standort, Unternehmensgröße und spezifische Fähigkeiten.

JavaScript ist der Eckpfeiler der modernen Webentwicklung. Zu den Hauptfunktionen gehören eine ereignisorientierte Programmierung, die Erzeugung der dynamischen Inhalte und die asynchrone Programmierung. 1) Ereignisgesteuerte Programmierung ermöglicht es Webseiten, sich dynamisch entsprechend den Benutzeroperationen zu ändern. 2) Die dynamische Inhaltsgenerierung ermöglicht die Anpassung der Seiteninhalte gemäß den Bedingungen. 3) Asynchrone Programmierung stellt sicher, dass die Benutzeroberfläche nicht blockiert ist. JavaScript wird häufig in der Webinteraktion, der einseitigen Anwendung und der serverseitigen Entwicklung verwendet, wodurch die Flexibilität der Benutzererfahrung und die plattformübergreifende Entwicklung erheblich verbessert wird.

Wie fusioniere ich Array -Elemente mit derselben ID in ein Objekt in JavaScript? Bei der Verarbeitung von Daten begegnen wir häufig die Notwendigkeit, dieselbe ID zu haben ...

JavaScript zu lernen ist nicht schwierig, aber es ist schwierig. 1) Verstehen Sie grundlegende Konzepte wie Variablen, Datentypen, Funktionen usw. 2) Beherrschen Sie die asynchrone Programmierung und implementieren Sie sie durch Ereignisschleifen. 3) Verwenden Sie DOM -Operationen und versprechen Sie, asynchrone Anfragen zu bearbeiten. 4) Vermeiden Sie häufige Fehler und verwenden Sie Debugging -Techniken. 5) Die Leistung optimieren und Best Practices befolgen.

Diskussion über die Realisierung von Parallaxe -Scrolling- und Elementanimationseffekten in diesem Artikel wird untersuchen, wie die offizielle Website der Shiseeido -Website (https://www.shiseeido.co.jp/sb/wonderland/) ähnlich ist ...

Erforschen Sie die Implementierung der Funktion des Bedien- und Drop-Einstellungsfunktion der Panel ähnlich wie VSCODE im Front-End. In der Front-End-Entwicklung wird VSCODE ähnlich wie VSCODE implementiert ...

Eingehende Diskussion der Ursachen des Unterschieds in der Konsole.log-Ausgabe. In diesem Artikel wird die Unterschiede in den Ausgabeergebnissen der Konsolenfunktion in einem Code analysiert und die Gründe dafür erläutert. � ...
