Perl und vielen anderen Programmiersprachen verwenden Arrays , um eine Liste von Daten zu speichern. Allerdings Perl unterstützt auch eine spezifische Datenstruktur genannt Hash . Ein Perl- Hash ordnet einen bestimmten Wert mit einem Schlüssel. Ein Beispiel ist die Hash { Jan = > 31 , Apr => 30} , in dem ein Monat ein Schlüssel und eine Anzahl von Tagen ist ein Wert . Ein Perl- Hash macht es möglich, einen einfachen Algorithmus , um Duplikate aus einem Array entfernen zu entwickeln. Das entsprechende Unterprogramm hat weniger als zehn Befehle in Perl . Anleitung
Erstellen einer Unterprogramm " Remove_duplicates ; " Ein Algorithmus
1
Erhalten Array-Daten und erklären, eine Hash "-Einträge . " Ein weiteres Array namens " new_array " enthält nicht duplizierten Daten . Die Schritte 1 bis 5 mit der Perl-Code in Abschnitt 2, Schritt 3 angegeben dargestellt .
2
zuordnen alle Array- Elemente wie die Hash-Schlüssel und weisen Hash-Werte gleich 1 für alle Tasten .
3
Schleife durch alle Elemente des Arrays und überprüfen Sie den Hash-Wert mit diesem Element verbunden.
4
Wenn der Hash-Wert 1 ist (siehe Schritt 3 ), dann die Element ist original oder nicht dupliziert und sollte hinzugefügt werden " new_array . " In der gleichen Zeit wird dieses Element markiert , dh der Hash-Wert auf 0
5
Wenn der Hash-Wert 0 ist, dann ist dieses Element wurde bereits angetroffen ; . Dh es wird dupliziert und übersprungen < . br>
Beispiel und Perl Programm
6
Duplikate entfernen aus dem Array mit Elementen ( 1 2 6 7 2 9 1 2 6).
7
Drucken Sie Anfangs-und End -Arrays ( ohne Duplikate )
8 Abs. 1
# # Subroutine Beginnt
sub remove_duplicates {my ( $ array , $ new_array ) = @ _ ; . Schritt # 1 . Lesen anfänglichen arraymy % entries = (); # Schritt 1 . Erklären Sie den Hash
foreach ( @ $ array ) {next if exists $ entries { $ _ }; $ entries { $ _ } = 1; } # Schritt 2
foreach ( @ $ array ) {# Schritt 3 . Schleife durch alle Array elementsif ( $ entries { $ _ }) { # Schritt 5 . Das Element wird übersprungen, wenn Hash-Wert ist 0.push @ $ new_array , $ _ ; # Schritt 4 . Fügen Sie ein Element in das neue Array nur, wenn Hash-Wert 1 $ entries ist { $ _ } = 0; # Schritt 4 . Das Element wird markiert , dh verändern den Hash-Wert auf 0 setzen. } }}
# Subroutine kurz
# § $ 2my array = [ qw ( 1 2 6 7 2 9 1 2 6)] ; # Schritt 1: ein Beispiel arraymy $ new_array = []; # remove_duplicates ( $ array , $ new_array ); print " @ $ array \\ n"; # Schritt 2 . Drucken anfänglichen arrayprint "@ $ new_array \\ n"; # Drucken endgültige arrayexit ;