diff --git a/GOETZ.pas b/GOETZ.pas new file mode 100644 index 0000000..6dac81f --- /dev/null +++ b/GOETZ.pas @@ -0,0 +1,263 @@ +unit Unit1; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, StdCtrls, ComCtrls, Spin, ExtCtrls; + +type + SortElement = record + Text: string; + Hoehe: integer; + end; + +type + TForm1 = class(TForm) + munsorted: TMemo; + msorted: TMemo; + GroupBox1: TGroupBox; + bBubble: TButton; + blinear: TButton; + bquick: TButton; + GroupBox2: TGroupBox; + lTime: TLabel; + lRounds: TLabel; + lChanges: TLabel; + GroupBox3: TGroupBox; + bfortune: TButton; + bloadfile: TButton; + bclear: TButton; + OpenDialog1: TOpenDialog; + Animate1: TAnimate; + lSort: TLabel; + litemcount: TLabel; + sfortune: TSpinEdit; + ladded: TLabel; + pb: TPaintBox; + procedure bBubbleClick(Sender: TObject); + procedure bquickClick(Sender: TObject); + procedure BubbleSort; + procedure Quicksort(links,rechts : integer); + function Divide(links, rechts:integer) : integer; + procedure Change(a, b:integer); + procedure bfortuneClick(Sender: TObject); + procedure bloadfileClick(Sender: TObject); + procedure bclearClick(Sender: TObject); + + private + { Private-Deklarationen } + //SortArray : array of string; + SortArray: array of SortElement; + Changes,Round, AnzeigeRatio : integer; + function SucheMaximum: integer; + public + { Public-Deklarationen } + end; + +var + Form1: TForm ; + +implementation + +{$R *.dfm} + +{************************************************* + ************* Programmsteuerung ************* + *************************************************} + +//Bubblesort + +procedure TForm1.bBubbleClick(Sender: TObject); +begin +Animate1.Play(1,Animate1.FrameCount,0); +lSort.Caption := 'Bubblesorting...'; +Form1.Refresh; +BubbleSort; +lSort.Caption := 'Bubblesort'; +Animate1.Stop; +end; + +//Quicksort + +procedure TForm1.bquickClick(Sender: TObject); +var Frequency,Time1,Time2 : int64; + StrCount,i : Integer; + buchstabe: char; +begin +lSort.Caption := 'Quicksorting...'; +Form1.Refresh; +Animate1.Play(1,Animate1.FrameCount,0); +QueryPerformanceFrequency(Frequency); +QueryPerformanceCounter(Time1); +Changes := 0; +StrCount := mUnSorted.Lines.Count; +SetLength(SortArray,StrCount); +for i := 0 to StrCount - 1 do begin + SortArray[i].Text := mUnSorted.Lines[i]; + SortArray[i].Hoehe := ord(SortArray[i].Text[1]) * 256 + ord(SortArray[i].Text[2]); +end; +AnzeigeRatio := SucheMaximum div pb.Height; +with pb.Canvas do +begin + Brush.Color := clWhite; + Brush.Style := bsSolid; + Pen.Style := psClear; + Rect(0, 0, pb.Height, pb.Width); +end; +Form1.Refresh; + +for i := 0 to Length(SortArray) - 1 do +begin + +end; + +litemcount.Caption := 'Anzahl: ' + inttostr(StrCount); + +Quicksort(0,StrCount-1); +mSorted.Clear; +mSorted.Visible := false; +for i := 0 to StrCount - 1 do begin + mSorted.lines.Add(SortArray[i].Text); +end; +mSorted.Visible := true; + + +QueryPerformanceCounter(Time2); +Animate1.Stop; +lSort.Caption := 'Quicksort'; +lTime.Caption := 'Zeit: ' + floattostr((Time2-Time1) * 1000 div Frequency) + ' ms'; +lRounds.Caption := 'Durchläufe: --'; +lchanges.Caption := 'Tauschvorgänge: ' + inttostr(Changes); + +end; + +//Erstellen von zufälligen Buchstabenkombinationen + +procedure TForm1.bfortuneClick(Sender: TObject); +var i : integer; +begin +randomize; +mUnsorted.Visible := false; +for i := 0 to sfortune.Value do begin + munsorted.Lines.Add(chr(65 + Random(27)) + chr(65 + Random(27))); +end; +mUnsorted.Visible := true; + +ladded.Caption := 'Hinzugefügt: ' + inttostr(i); + +//Liste aus Datei laden + +end; + +procedure TForm1.bloadfileClick(Sender: TObject); +begin +if Opendialog1.Execute then mUnSorted.Lines.LoadFromFile(Opendialog1.FileName); + +end; + +procedure TForm1.bclearClick(Sender: TObject); +begin +mSorted.Clear; +mUnsorted.Clear; +end; + + +{************************************************* + **************** Algorithmen ************** + *************************************************} + +procedure TForm1.BubbleSort; +var changed : boolean; + StrCount,i: integer; + Frequency,Time1,Time2 : int64; +begin +Changes := 0; +Round := 0; + +QueryPerformanceFrequency(Frequency); +QueryPerformanceCounter(Time1); + +StrCount := mUnSorted.Lines.Count; +SetLength(SortArray,StrCount); +for i := 0 to StrCount - 1 do begin + SortArray[i].Text := mUnSorted.Lines[i]; +end; +litemcount.Caption := 'Anzahl: ' + inttostr(StrCount); + +repeat +changed := false; +for i := 0 to StrCount-2 do begin + if Sortarray[i].Text > Sortarray[i+1].Text then + begin + changed := true; + Change(i,i+1); + end; +end; +inc(Round); +until not changed; + +mSorted.Visible := false; +for i := 0 to StrCount - 1 do begin + mSorted.lines.Add(SortArray[i].Text); +end; +mSorted.Visible := true; + +QueryPerformanceCounter(Time2); + +lTime.Caption := 'Zeit: ' + inttostr((Time2-Time1) * 1000 div Frequency) + ' ms'; +lRounds.Caption := 'Durchläufe: ' + inttostr(round); +lchanges.Caption := 'Tauschvorgänge: ' + inttostr(changes); + +end; //procedure + +procedure TForm1.Quicksort(links,rechts : integer); +var teiler : integer; +begin + if rechts > links then begin + teiler := Divide(links, rechts); + quicksort(links, teiler-1); + quicksort(teiler+1, rechts); + end; +end; + +function TForm1.Divide(links, rechts : integer) : integer; +var i,j,pivot: integer; +begin + i := links-1; + j := rechts ; + pivot := rechts; + while true do begin + inc(i); + while SortArray[i].Text < SortArray[pivot].Text do inc(i); + dec(j); + while (SortArray[pivot].Text < SortArray[j].Text) and (j > links) do dec(j); + if i >= j then break; + Change(i, j); + end; + Change(i, pivot); + result := i; +end; + +procedure TForm1.Change(a, b : integer); +var Dummy : string; +begin + Dummy := SortArray[a].Text; + SortArray[a] := SortArray[b]; + SortArray[b].Text := Dummy; + inc(Changes); +end; + +function TForm1.SucheMaximum: integer; +var i, x: integer; +begin + x := 0; + for i := 0 to Length(SortArray) - 1 do + begin + if SortArray[i].Hoehe > x then x := SortArray[i].Hoehe; + end; + + result := x; +end; + +end. diff --git a/Sort.cfg b/Sort.cfg new file mode 100644 index 0000000..d42bcd6 --- /dev/null +++ b/Sort.cfg @@ -0,0 +1,35 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-LE"c:\program files (x86)\delphi6\Projects\Bpl" +-LN"c:\program files (x86)\delphi6\Projects\Bpl" diff --git a/Sort.dpr b/Sort.dpr new file mode 100644 index 0000000..3f63b3a --- /dev/null +++ b/Sort.dpr @@ -0,0 +1,14 @@ +program Sort; + +uses + Forms, + Unit1 in 'Unit1.pas' {Form1}, + usort in 'usort.pas'; + +{$R *.res} + +begin + Application.Initialize; + Application.CreateForm(TForm1, Form1); + Application.Run; +end. diff --git a/Sort.res b/Sort.res new file mode 100644 index 0000000..b111060 Binary files /dev/null and b/Sort.res differ diff --git a/Unit1.dfm b/Unit1.dfm new file mode 100644 index 0000000..5b00e1f --- /dev/null +++ b/Unit1.dfm @@ -0,0 +1,2655 @@ +object Form1: TForm1 + Left = 476 + Top = 126 + Width = 696 + Height = 480 + Caption = 'Form1' + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + OnCreate = FormCreate + PixelsPerInch = 96 + TextHeight = 13 + object Memo1: TMemo + Left = 0 + Top = 0 + Width = 185 + Height = 441 + Align = alLeft + Lines.Strings = ( + 'Aaliah' + 'Aaron' + 'Abby' + 'Abel' + 'Abigail' + 'Abraham' + 'Ada' + 'Adalberoedel' + 'Adalbert' + 'Adam' + 'Addie' + 'Addison' + 'Adela' + 'Adelaide' + 'Adelbert' + 'Adele' + 'Adelgund' + 'Adelheid' + 'Adelind' + 'Adeline' + 'Adeltrud' + 'Ado' + 'Adolf' + 'Adolfo' + 'Adolphe' + 'Adrian' + 'Adriana' + 'Adrianna' + 'Adrien' + 'Adrienne' + 'Adula' + 'Aegidius' + 'Afra' + 'Agatha' + 'Agathe' + 'Agilolf' + 'Agnes' + 'Agn'#232's' + 'Agritius' + 'Agustin' + 'Aida' + 'Aidan' + 'Aiden' + 'Aileen' + 'Aimee' + 'Aine' + 'Al' + 'Alaina' + 'Alan' + 'Alana' + 'Alanna' + 'Alban' + 'Alberich' + 'Albert' + 'Alberta' + 'Albertine' + 'Alberto' + 'Albin' + 'Albuin' + 'Aldemar' + 'Alec' + 'Alejandra' + 'Alejandro' + 'Alela'#239'de' + 'Alex' + 'Alexa' + 'Alexander' + 'Alexandra' + 'Alexandre' + 'Alexandria' + 'Alexia' + 'Alexis' + 'Alexus' + 'Aleydis' + 'Alfons' + 'Alfonso' + 'Alfred' + 'Alfredo' + 'Ali' + 'Alice' + 'Alicia' + 'Alisha' + 'Alison' + 'Alissa' + 'Aliyah' + 'Alkuin' + 'Allan' + 'Allen' + 'Allison' + 'Allowin' + 'Allyson' + 'Alma' + 'Almud' + 'Almut' + 'Alois' + 'Alo'#239's' + 'Alondra' + 'Alonso' + 'Alonzo' + 'Alphonse' + 'Alta' + 'Altmann' + 'Alto' + 'Alton' + 'Alvin' + 'Alwined' + 'Alyson' + 'Alyssa' + 'Amadeus' + 'Amanda' + 'Amandus' + 'Amarin' + 'Amata' + 'Amatus' + 'Amaya' + 'Amber' + 'Ambrosius' + 'Amelia' + 'America' + 'Amory' + 'Amos' + 'Amy' + 'Ana' + 'Anais' + 'Anastasia' + 'Anastasius' + 'Anatole' + 'Andelique' + 'Andre' + 'Andr'#233 + 'Andrea' + 'Andreas' + 'Andres' + 'Andrew' + 'Andy' + 'Anette' + 'Angel' + 'Angela' + 'Angelia' + 'Angelica' + 'Angelika' + 'Angelikus' + 'Angelina' + 'Angeline' + 'Ang'#233'lique' + 'Angelo' + 'Angelus' + 'Angie' + 'Anika' + 'Anine' + 'Anissa' + 'Anita' + 'Ann' + 'Anna' + 'Anna Katharina' + 'Anne' + 'Annegret' + 'Annette' + 'Annice' + 'Annie' + 'Annika' + 'Anno' + 'Annunziata' + 'Anselm' + 'Ansgar' + 'Answin' + 'Anthony' + 'Antje' + 'Antoine' + 'Antoinette' + 'Anton' + 'Antonia' + 'Antonie' + 'Antonio' + 'Antonius' + 'Apollinaris' + 'Apollonia' + 'April' + 'Aquilin' + 'Arabella' + 'Arbogast' + 'Archie' + 'Ariana' + 'Ariane' + 'Arianna' + 'Arianne' + 'Aric' + 'Ariel' + 'Arielle' + 'Arlene' + 'Armand' + 'Armando' + 'Armin' + 'Arnando' + 'Arnault' + 'Arno' + 'Arnold' + 'Arnuald' + 'Arnulf' + 'Aron' + 'Arthur' + 'Arturo' + 'Ashlee' + 'Ashleigh' + 'Ashley' + 'Ashlie' + 'Ashlyn' + 'Ashlynn' + 'Ashton' + 'Asia' + 'Assunta' + 'Astrid' + 'Athanasia' + 'Athanasius' + 'Attala' + 'Attila' + 'Aubrey' + 'Audra' + 'Audrey' + 'Audrie' + 'Audry' + 'August' + 'Auguste' + 'Augustin' + 'Augustinus' + 'Augusto' + 'Aurea' + 'Aurel' + 'Aurelia' + 'Aurelian' + 'Aurora' + 'Austin' + 'Autumn' + 'Ava' + 'Avery' + 'Axel' + 'Aya ' + 'Bado' + 'Bailey' + 'Balduin' + 'Balthasar' + 'Bantus' + 'Baptiste' + 'Barbara' + 'Barbra' + 'Bardo' + 'Barnabas' + 'Barry' + 'Bart' + 'Bartholom'#228'us' + 'Basilissa' + 'Basilius' + 'Basin' + 'Bastien' + 'Beate' + 'Beatrice' + 'B'#233'atrice' + 'Beatrix' + 'Beatriz' + 'Beatus' + 'Beckie' + 'Becky' + 'Beda' + 'Belinda' + 'Bella' + 'Ben' + 'Benedikt' + 'Benedikta' + 'Benigna' + 'Benignus' + 'Benito' + 'Benjamin' + 'Bennie' + 'Benno' + 'Benny' + 'Beno'#239't' + 'Berard' + 'Berengar' + 'Berlind' + 'Bernadette' + 'Bernardo' + 'Bernhard' + 'Bernice' + 'Bernward' + 'Bert' + 'Berta' + 'Bertha' + 'Berthe' + 'Berthild' + 'Bertold' + 'Bertram' + 'Bertrand' + 'Bessie' + 'Beth' + 'Bethany' + 'Bettina' + 'Betty' + 'Beulah' + 'Beverly' + 'Bianca' + 'Bibiana' + 'Bill' + 'Billie' + 'Billy' + 'Birgit' + 'Blaine' + 'Blake' + 'Blanca' + 'Blanche' + 'Blandina' + 'Blasius' + 'Bob' + 'Bobbi' + 'Bobbie' + 'Bobby' + 'Bodo' + 'Bonaventura' + 'Bonifatius' + 'Bonita' + 'Bonnie' + 'Boris' + 'Boso' + 'Boyd' + 'Brad' + 'Braden' + 'Bradford' + 'Bradley' + 'Brady' + 'Branden' + 'Brandi' + 'Brandon' + 'Brandy' + 'Braxton' + 'Brayden' + 'Breana' + 'Breanna' + 'Brenda' + 'Brendan' + 'Brenden' + 'Brendon' + 'Brenna' + 'Brennan' + 'Brent' + 'Bret' + 'Brett' + 'Brian' + 'Briana' + 'Brianna' + 'Brianne' + 'Bridget' + 'Bridgett' + 'Brigitta' + 'Brigitte' + 'Brigitte' + 'Briktius' + 'Britney' + 'Brittany' + 'Brittney' + 'Brock' + 'Broocke' + 'Brooklyn' + 'Brooks' + 'Bruce' + 'Brun' + 'Bruno' + 'Bryan' + 'Bryana' + 'Bryanna' + 'Bryant' + 'Bryce' + 'Bud' + 'Buddy' + 'Burkhard' + 'Burton' + 'Byron ' + 'C'#228'cilia' + 'Cade' + 'Caden' + 'Caitlin' + 'Caitlyn' + 'Caleb' + 'Callie' + 'Calvin' + 'Cameron' + 'Camilla' + 'Camille' + 'Camryn' + 'Candace' + 'Candice' + 'Candidus' + 'Canditus' + 'Candy' + 'Cara' + 'Carey' + 'Carl' + 'Carla' + 'Carley' + 'Carlo' + 'Carlos' + 'Carlton' + 'Carly' + 'Carmel' + 'Carmela' + 'Carmen' + 'Carol' + 'Carola' + 'Carole' + 'Carolina' + 'Caroline' + 'Carolyn' + 'Carrie' + 'Carroll' + 'Carry' + 'Carson' + 'Carsten' + 'Carter' + 'Cary' + 'Caryn' + 'C'#228'sar' + 'Casey' + 'Cassandra' + 'Cassidy' + 'Cassie' + 'Cate' + 'Catherine' + 'Cath'#233'rine' + 'Cathy' + 'Cecelia' + 'Cecil' + 'Cecile' + 'Cecilia' + 'Celeste' + 'Celestina' + 'Celestine' + 'Celia' + 'Cesar' + 'Chad' + 'Chance' + 'Chantal' + 'Charis' + 'Charise' + 'Charissa' + 'Charisse' + 'Charitas' + 'Charity' + 'Charlene' + 'Charles' + 'Charlie' + 'Charlotte' + 'Chase' + 'Chasity' + 'Chastity' + 'Chaz' + 'Chelsea' + 'Chelsey' + 'Cheri' + 'Cherie' + 'Cheryl' + 'Chester' + 'Cheyenne' + 'Chlothilde' + 'Chris' + 'Christa' + 'Christian' + 'Christiane' + 'Christie' + 'Christina' + 'Christine' + 'Christoph' + 'Christophe' + 'Christopher' + 'Christy' + 'Chrysanth' + 'Chuck' + 'Ciara' + 'Cierra' + 'Cinda' + 'Cindy' + 'Claire' + 'Clara' + 'Clarence' + 'Clarice' + 'Clarissa' + 'Clark' + 'Claude' + 'Claudette' + 'Claudia' + 'Claudine' + 'Claudius' + 'Clay' + 'Clayton' + 'Clemens' + 'Clementine' + 'Cleo' + 'Cleveland' + 'Clifford' + 'Clifton' + 'Clint' + 'Clinton' + 'Clyde' + 'Coby' + 'Cody' + 'Colby' + 'Cole' + 'Coletta' + 'Colin' + 'Colleen' + 'Collin' + 'Colton' + 'Conner' + 'Connie' + 'Connor' + 'Conor' + 'Conrad' + 'Constance' + 'Constanze' + 'Consuelo' + 'Cooper' + 'Cora' + 'Cordula' + 'Corey' + 'Corinna' + 'Corinne' + 'Cornelia' + 'Cornelius' + 'Cory' + 'Courtney' + 'Craig' + 'Crispin' + 'Cristal' + 'Cristian' + 'Cristina' + 'Cristobal' + 'Crystal' + 'Curt' + 'Curtis' + 'Cynthia' + 'Cyprian' + 'Cyriakus' + 'Cyrill' + 'Cyrillus' + 'Cyrus ' + 'Dagmar' + 'Dagobert' + 'Daisy' + 'Dakota' + 'Dale' + 'Dallas' + 'Daltin' + 'Dalton' + 'Damasus' + 'Damian' + 'Damien' + 'Damion' + 'Damon' + 'Dan' + 'Dana' + 'Dania' + 'Daniel' + 'Daniela' + 'Daniella' + 'Danielle' + 'Danika' + 'Dannika' + 'Danny' + 'Dante' + 'Daphne' + 'Daria' + 'Darin' + 'Dario' + 'Darius' + 'Darla' + 'Darleen' + 'Darlene' + 'Darnell' + 'Darrell' + 'Darren' + 'Darrin' + 'Darrlyn' + 'Darryl' + 'Darwin' + 'Daryl' + 'Dave' + 'David' + 'Davis' + 'Dawn' + 'Dawson' + 'Dayana' + 'Dean' + 'Deana' + 'Deandre' + 'Deanna' + 'Debbie' + 'Debora' + 'Deborah' + 'Debra' + 'Dee' + 'Degenhard' + 'Delaney' + 'Delbert' + 'Delia' + 'Della' + 'Delores' + 'Deloris' + 'Demetrius' + 'Dena' + 'Denise' + 'Dennis' + 'D'#233'sir'#233 + 'Desiree' + 'Destiny' + 'Detlev' + 'Devan' + 'Deven' + 'Devin' + 'Devon' + 'Dewayne' + 'Dewey' + 'Dewitt' + 'Dexter' + 'Dharma' + 'Diamond' + 'Diana' + 'Diane' + 'Dianna' + 'Dianne' + 'Dick' + 'Diego' + 'Di'#233'go' + 'Dietbert' + 'Dieter' + 'Dietger' + 'Diethard' + 'Diethild' + 'Dietlinde' + 'Dietmar' + 'Dietrich' + 'Dillon' + 'Dina' + 'Dinoysius' + 'Dion' + 'Diona' + 'Dione' + 'Dionysia' + 'Dionysius' + 'Dixie' + 'Dolly' + 'Dolores' + 'Domingo' + 'Dominic' + 'Dominick' + 'Dominika' + 'Dominikus' + 'Dominique' + 'Domitian' + 'Don' + 'Donald' + 'Donatus' + 'Donna' + 'Donnie' + 'Donovan' + 'Dora' + 'Doreen' + 'Doris' + 'Dorothea' + 'Dorothy' + 'Dorthy' + 'Doug' + 'Douglas' + 'Doyle' + 'Drake' + 'Drew' + 'Drutmar' + 'Duane' + 'Dustin' + 'Dwayne' + 'Dwight' + 'Dylan ' + 'Earl' + 'Earnest' + 'Ebba' + 'Eberhard' + 'Ebony' + 'Eckart' + 'Ed' + 'Eddie' + 'Eddy' + 'Edelbert' + 'Edelburg' + 'Edelburga' + 'Edeltraud' + 'Edgar' + 'Edgardo' + 'Edith' + 'Edmond' + 'Edmund' + 'Edna' + 'Edouard' + 'Eduard' + 'Eduardo' + 'Edward' + 'Edwardo' + 'Edwige' + 'Edwin' + 'Effie' + 'Efrain' + 'Egbert' + 'Egino' + 'Egon' + 'Eileen' + 'Einhard' + 'Ekkehard' + 'Elaine' + 'Elbert' + 'Eldon' + 'Eleanor' + 'Elena' + 'Eleonore' + 'El'#233'onore' + 'Elfriede' + 'Eli' + 'Elias' + 'Eligius' + 'Elijah' + 'Elisa' + 'Elisabeth' + 'Elisie' + 'Elissa' + 'Eliza' + 'Elizabeth' + 'Elke' + 'Ella' + 'Ellen' + 'Elliot' + 'Ellis' + 'Elma' + 'Elmar' + 'Elmer' + 'Eloise' + 'Elton' + 'Elva' + 'Elvira' + 'Elvire' + 'Elvis' + 'Elwood' + 'Emanuel' + 'Emanuelle' + 'Emely' + 'Emil' + 'Emile' + 'Emilee' + 'Emilia' + 'Emilie' + 'Emilio' + 'Emily' + 'Emma' + 'Emmanuel' + 'Emmeram' + 'Emmerich' + 'Emmet' + 'Emmett' + 'Engelbert' + 'Engelmar' + 'Enrique' + 'Ephr'#228'm' + 'Erasmus' + 'Erentrud' + 'Erhard' + 'Eric' + 'Erica' + 'Erich' + 'Erick' + 'Ericka' + 'Erik' + 'Erika' + 'Erin' + 'Erma' + 'Erminold' + 'Ernest' + 'Ernestin' + 'Ernestine' + 'Ernesto' + 'Ernie' + 'Ernst' + 'Ervin' + 'Erwin' + 'Esperanza' + 'Essie' + 'Esteban' + 'Estefania' + 'Estella' + 'Estelle' + 'Esther' + 'Ethan' + 'Ethiel' + 'Etienne' + 'Etta' + 'Eucharius' + 'Eugen' + 'Eugene' + 'Eug'#232'ne' + 'Eugenia' + 'Eula' + 'Eulalia' + 'Eunice' + 'Eunike' + 'Euphemia' + 'Eusebius' + 'Eustachius' + 'Eustasia' + 'Eva' + 'Evan' + 'Eve' + 'Evelyn' + 'Everett' + 'Ewald' + 'Ezechiel ' + 'Fabian' + 'Fabien' + 'Fabiola' + 'Faith' + 'Falko' + 'Fannie' + 'Farrah' + 'Fatima' + 'Fay' + 'Faye' + 'Federico' + 'Felicia' + 'F'#233'licien' + 'Felicitas' + 'Felicity' + 'Felipe' + 'Felix' + 'F'#233'lix' + 'Felizian' + 'Felizitas' + 'Ferdinand' + 'Fern' + 'Fernand' + 'Fernando' + 'Fidelis' + 'Firmin' + 'Flavia' + 'Flora' + 'Florence' + 'Florentius' + 'Florian' + 'Floyd' + 'Forest' + 'Fortunata' + 'Franca' + 'Frances' + 'Francesca' + 'Francine' + 'Francis' + 'Francisca' + 'Francisco' + 'Franco' + 'Fran'#231'ois' + 'Frank' + 'Frankie' + 'Franklin' + 'Franz' + 'Franz Joseph' + 'Franziska' + 'Fred' + 'Freda' + 'Freddie' + 'Freddy' + 'Fr'#233'd'#233'ric' + 'Frederick' + 'Fredrick' + 'Fridolin' + 'Frieda' + 'Friedrich' + 'Fritz' + 'Frowin' + 'Fulbert' + 'Fulger' + 'Fulko' + 'Gabriel' + 'Gabriela' + 'Gabriele' + 'Gabriella' + 'Gabrielle' + 'Gage' + 'Gail' + 'Gale' + 'Galla' + 'Gallus' + 'Gangolf' + 'Garland' + 'Garret' + 'Garrett' + 'Garry' + 'Gary' + 'Gaspard' + 'Gaston' + 'Gaudenz' + 'Gavin' + 'Gayle' + 'Gebhard' + 'Gene' + 'Genesis' + 'Geneva' + 'Genevieve' + 'Genoveva' + 'Geoffrey' + 'Geoffroi' + 'Geoffroy' + 'Georg' + 'George' + 'Georges' + 'Georgia' + 'Georgianne' + 'Georgina' + 'Gerald' + 'G'#233'rald' + 'Geraldine' + 'G'#233'raldine' + 'Gerard' + 'G'#233'rard' + 'Gerardo' + 'Gerburg' + 'Gereon' + 'Gerhard' + 'Gerhild' + 'Gerlach' + 'Gerlind' + 'Gerlinde' + 'German' + 'Germanus' + 'Germar' + 'Gero' + 'Gerold' + 'Gerry' + 'Gertrud' + 'Gertrude' + 'Gervasius' + 'Gerwin' + 'Gianna' + 'Gilbert' + 'Gilberto' + 'Gillian' + 'Gina' + 'Ginger' + 'Giovanni' + 'Gisbert' + 'Gisela' + 'Giselbert' + 'Gis'#232'lle' + 'Gislar' + 'Gisselle' + 'Gitta' + 'Gladys' + 'Glen' + 'Glenda' + 'Glenn' + 'Glenna' + 'Gloria' + 'Gloriosa' + 'Godehard' + 'Goldie' + 'Gordian' + 'Gordon' + 'Gosbert' + 'Goswin' + 'Gottfried' + 'Gotthard' + 'Gottlieb' + 'Gottschalk' + 'Grace' + 'Gracie' + 'Graciela' + 'Grady' + 'Graham' + 'Grant' + 'Gratia' + 'Greg' + 'Gregg' + 'Gregor' + 'Gregorio' + 'Gregory' + 'Gr'#233'gory' + 'Griffin' + 'Grover' + 'Guadalupe' + 'Guido' + 'Guillaume' + 'Guillermo' + 'Gundolf' + 'Gundula' + 'Gunther' + 'G'#252'nther' + 'Gunthild' + 'Guntram' + 'Gustav' + 'Gustave' + 'Gustavo' + 'Guy' + 'Gwen' + 'Gwendolyn' + 'Gwenn' + 'Hadrian' + 'Hagar' + 'Haimo' + 'Hallie' + 'Handy' + 'Hank' + 'Hanna' + 'Hannah' + 'Hanno' + 'Hans' + 'Harald' + 'Hardwart' + 'Harlan' + 'Harley' + 'Harold' + 'Harriet' + 'Harriett' + 'Harrison' + 'Harry' + 'Hartmann' + 'Hartmut' + 'Hartwich' + 'Harvey' + 'Hattie' + 'Hatto' + 'Hayden' + 'Haylee' + 'Hayley' + 'Hazel' + 'Hedwig' + 'Heidi' + 'Heidy' + 'Heike' + 'Heimo' + 'Heinrich' + 'Helen' + 'Helena' + 'H'#233'l'#232'ne' + 'Helga' + 'Helmtrud' + 'Helmut' + 'Hemma' + 'Henri' + 'Henrietta' + 'Henrika' + 'Henry' + 'Heribert' + 'Heriberto' + 'Herman' + 'Hermann' + 'Hermine' + 'Herta' + 'Herv'#233 + 'Herwig' + 'Hieronymus' + 'Hilarius' + 'Hilda' + 'Hildebrand' + 'Hildegard' + 'Hildegund' + 'Hildemar' + 'Hiltrud' + 'Hippolyt' + 'Holger' + 'Holly' + 'Homer' + 'Hope' + 'Horace' + 'Horst' + 'Hortensia' + 'Howard' + 'Hubert' + 'Hugh' + 'Hugo' + 'Hulda' + 'Humbert' + 'Humberto' + 'Huna' + 'Hunter' + 'Hyazinth ' + 'Ian' + 'Ibrahim' + 'Ida' + 'Ignacio' + 'Ignatius' + 'Igor' + 'Ildefons' + 'Imani' + 'Imelda' + 'Immakulata' + 'Immanuel' + 'Imogene' + 'Ina' + 'Inez' + 'Ingeborg' + 'Ingenuin' + 'Ingobert' + 'Ingrid' + 'Innozenz' + 'Iphigenie' + 'Ira' + 'Iren'#228'us' + 'Irene' + 'Ir'#232'ne' + 'Iris' + 'Irma' + 'Irmgard' + 'Irmhild' + 'Irmina' + 'Irmtrud' + 'Irvin' + 'Irving' + 'Isaac' + 'Isaak' + 'Isabell' + 'Isabella' + 'Isabelle' + 'Isaiah' + 'Isias' + 'Isidor' + 'Isidora' + 'Ismael' + 'Iso' + 'Israel' + 'Issac' + 'Iva' + 'Ivan' + 'Ivette' + 'Ivo' + 'Ivy ' + 'Jack' + 'Jacki' + 'Jackie' + 'Jackson' + 'Jaclyn' + 'Jacob' + 'Jacquelin' + 'Jacqueline' + 'Jacquelyn' + 'Jacques' + 'Jada' + 'Jade' + 'Jaden' + 'Jadon' + 'Jaime' + 'Jake' + 'Jakob' + 'Jakobus' + 'Jalen' + 'Jamal' + 'James' + 'Jamie' + 'Jan' + 'Jana' + 'Jane' + 'Janet' + 'Janice' + 'Janie' + 'Janis' + 'Januarius' + 'Jared' + 'Jarred' + 'Jarrett' + 'Jarrod' + 'Jasmin' + 'Jasmine' + 'Jason' + 'Jasper' + 'Javier' + 'Jay' + 'Jayden' + 'Jayla' + 'Jayson' + 'Jazmin' + 'Jazmine' + 'Jean' + 'Jeanette' + 'Jeanine' + 'Jeanne' + 'Jeannette' + 'Jeannine' + 'Jeff' + 'Jeffery' + 'Jeffrey' + 'Jenifer' + 'Jenna' + 'Jennell' + 'Jennie' + 'Jennifer' + 'Jenny' + 'Jens' + 'Jerald' + 'Jeremiah' + 'Jeremias' + 'J'#233'r'#233'mie' + 'Jeremy' + 'Jeri' + 'Jermaine' + 'Jerome' + 'J'#233'r'#244'me' + 'Jerred' + 'Jerrod' + 'Jerry' + 'Jess' + 'Jesse' + 'Jessica' + 'Jessie' + 'Jessika' + 'Jesus' + 'Jewel' + 'Jewell' + 'Jill' + 'Jillian' + 'Jim' + 'Jimmie' + 'Jimmy' + 'Jo' + 'Joachim' + 'Joan' + 'Joann' + 'Joanna' + 'Joanne' + 'Joaquin' + 'Jobst' + 'Joceline' + 'Jocelyn' + 'Jodi' + 'Jodie' + 'Jody' + 'Joe' + 'Jo'#235 + 'Joel' + 'Joelle' + 'Joey' + 'Johann' + 'Johanna' + 'Johannes' + 'John' + 'Johnathan' + 'Johnathon' + 'Johnnie' + 'Johnny' + 'Johnson' + 'Jolanda' + 'Jolanda' + 'Jolene' + 'Jon' + 'Jonah' + 'Jonas' + 'Jonathan' + 'Jonathon' + 'Joni' + 'Jordan' + 'Jordi' + 'Jordon' + 'Jordyn' + 'J'#246'rg' + 'Jorge' + 'Jose' + 'Jos'#233'e' + 'Josef' + 'Josefa' + 'Josefina' + 'Joselyn' + 'Joseph' + 'Josephine' + 'Jos'#233'phine' + 'Josh' + 'Joshua' + 'Josiah' + 'Josiane' + 'Josie' + 'Jost' + 'Josue' + 'Jourdain' + 'Joy' + 'Joyce' + 'Juan' + 'Juana' + 'Juanita' + 'Judas' + 'Jude' + 'Judie' + 'Judith' + 'Judy' + 'Jules' + 'Julia' + 'Julian' + 'Juliana' + 'Julianna' + 'Julianne' + 'Julie' + 'Julien' + 'Juliet' + 'Juliette' + 'Julio' + 'Julius' + 'June' + 'Junior' + 'Justin' + 'Justina' + 'Justine' + 'Justinian' + 'Justus' + 'Jutta ' + 'Kaden' + 'Kailey' + 'Kairan' + 'Kaitlin' + 'Kaitlyn' + 'Kajetan' + 'Kala' + 'Kaleb' + 'Kali' + 'Kalixtus' + 'Kameron' + 'Kamryn' + 'Kara' + 'Karen' + 'Kari' + 'Karina' + 'Karl' + 'Karla' + 'Karoline' + 'Karsten' + 'Kasey' + 'Kasimir' + 'Kaspar' + 'Kassandra' + 'Kassian' + 'Kassidy' + 'Kassius' + 'Kastor' + 'Kate' + 'Katelyn' + 'Katharina' + 'Katharine' + 'Katherine' + 'Kathleen' + 'Kathryn' + 'Kathy' + 'Katie' + 'Katrina' + 'Katya' + 'Kay' + 'Kayla' + 'Kaylee' + 'Keegan' + 'Keiron' + 'Keisha' + 'Keith' + 'Kelley' + 'Kelli' + 'Kellie' + 'Kelly' + 'Kelsey' + 'Kelsie' + 'Kelvin' + 'Ken' + 'Kendall' + 'Kendra' + 'Kennedy' + 'Kenneth' + 'Kenny' + 'Kent' + 'Keri' + 'Kermit' + 'Kerri' + 'Kerry' + 'Kerstin' + 'Kevin' + 'Kevon' + 'Kiana' + 'Kiara' + 'Kiera' + 'Kieran' + 'Kigan' + 'Kiley' + 'Kilian' + 'Kim' + 'Kimberle' + 'Kimberley' + 'Kimberly' + 'Kira' + 'Kirk' + 'Kirstan' + 'Kirsten' + 'Kjeld' + 'Klara' + 'Klemens' + 'Kletus' + 'Klothilde' + 'Knud' + 'Kobe' + 'Koby' + 'Kody' + 'Koloman' + 'Kolumba' + 'Kolumban' + 'Konrad' + 'Konstantia' + 'Konstantin' + 'Korbinian' + 'Kordula' + 'Korey' + 'Kornelia' + 'Kornelius' + 'Korona' + 'Kory' + 'Kosmas' + 'Kreszentia' + 'Krispin' + 'Krista' + 'Kristen' + 'Kristi' + 'Kristian' + 'Kristie' + 'Kristin' + 'Kristina' + 'Kristine' + 'Kristopher' + 'Kristy' + 'Krystal' + 'Kunibert' + 'Kunigunde' + 'Kuno' + 'Kurt' + 'Kurtis' + 'Kyla' + 'Kyle' + 'Kylee' + 'Kyler' + 'Kylie' + 'Kyra' + 'Kyran ' + 'Lacey' + 'Ladislaus' + 'Ladonna' + 'Lamar' + 'Lambert' + 'Lamont' + 'Lana' + 'Lance' + 'Landon' + 'Lane' + 'Lara' + 'Larissa' + 'Larry' + 'Latasha' + 'L'#228'tizia' + 'Latoya' + 'Laura' + 'Laurel' + 'Lauren' + 'Laurence' + 'Laurent' + 'Laurentius' + 'Laurie' + 'Lauryn' + 'Laverne' + 'Lawrence' + 'Layton' + 'Lazarus' + 'Lea' + 'L'#233'a' + 'Leah' + 'Leander' + 'Leanne' + 'Lee' + 'Leigh' + 'Lela' + 'Leland' + 'Lena' + 'Lenny' + 'Lenora' + 'Leo' + 'Leola' + 'Leon' + 'Leon Ignace' + 'Leona' + 'Leonard' + 'L'#233'onard' + 'Leonardo' + 'L'#233'once' + 'Leonhard' + 'Leopard' + 'Leopold' + 'L'#233'opold' + 'Leroy' + 'Lesley' + 'Leslie' + 'Lesly' + 'Lester' + 'Leticia' + 'Levi' + 'Lewis' + 'Lex' + 'Liam' + 'Libby' + 'Liborius' + 'Lidwina' + 'Lila' + 'Lilia' + 'Lilian' + 'Liliana' + 'Lillian' + 'Lillie' + 'Lilly' + 'Lily' + 'Linda' + 'Lindsay' + 'Lindsey' + 'Linus' + 'Lioba' + 'Lionel' + 'Lisa' + 'Lise' + 'Lisette' + 'Liuthild' + 'Livia' + 'Lloyd' + 'Logan' + 'Lois' + 'Lola' + 'Lora' + 'Loren' + 'Lorena' + 'Lorene' + 'Lorenz' + 'Lorenzo' + 'Loretta' + 'Lori' + 'Lorie' + 'Lorna' + 'Lorne' + 'Lorraine' + 'Lothar' + 'Lottie' + 'Lou' + 'Louie' + 'Louis' + 'Louise' + 'Lourdes' + 'Lowell' + 'Lubentius' + 'Lucas' + 'Lucia' + 'Lucie' + 'Lucile' + 'Lucilla' + 'Lucille' + 'Lucinda' + 'Lucius' + 'Lucy' + 'Ludgar' + 'Ludger' + 'Ludmilla' + 'Ludolf' + 'Ludwig' + 'Ludwin' + 'Luella' + 'Luis' + 'Luisa' + 'Luise' + 'Luitpold' + 'Lukas' + 'Luke' + 'Lukretia' + 'Lula' + 'Lupe' + 'Luther' + 'Lutwin' + 'Luz' + 'Luzia' + 'Lydia' + 'Lydie' + 'Lyle' + 'Lynda' + 'Lynette' + 'Lynn' + 'Lynne ' + 'Mabel' + 'Mable' + 'Mack' + 'Mackenzie' + 'Macy' + 'Maddison' + 'Madeleine' + 'Madeline' + 'Madelyn' + 'Madison' + 'Madyson' + 'Mae' + 'Mafalda' + 'Magdalena' + 'Magdalene' + 'Maggie' + 'Magnerich' + 'Magnus' + 'Maia' + 'Maira' + 'Makarius' + 'Makayla' + 'Makenna' + 'Makenzie' + 'Malachias' + 'Malcolm' + 'Malik' + 'Mallory' + 'Mamertus' + 'Mamie' + 'Mandy' + 'Manfred' + 'Manuel' + 'Manuela' + 'Manuella' + 'Marc' + 'Marcel' + 'Marcela' + 'Marcelino' + 'Marcella' + 'Marcelle' + 'Marcellus' + 'Marcelo' + 'Marcia' + 'Marco' + 'Marcos' + 'Marcus' + 'Marcy' + 'Margaret' + 'Margareta' + 'Margarete' + 'Margarita' + 'Marge' + 'Margie' + 'Margot' + 'Margrit' + 'Marguerite' + 'Maria' + 'Maria Anna' + 'Maria Katharina' + 'Maria Magdalena' + 'Maria Therese' + 'Mariah' + 'Marian' + 'Mariana' + 'Marianne' + 'Marie' + 'Marilyn' + 'Marina' + 'Mario' + 'Marion' + 'Marissa' + 'Marius' + 'Marjorie' + 'Mark' + 'Markus' + 'Markward' + 'Marla' + 'Marlene' + 'Marlon' + 'Maro' + 'Marsha' + 'Marshall' + 'Martha' + 'Marthe' + 'Martin' + 'Martina' + 'Marty' + 'Marvin' + 'Mary' + 'Maryann' + 'Marzella' + 'Marzellinus' + 'Marzellus' + 'Mason' + 'Matej' + 'Maternus' + 'Mathew' + 'Mathilde' + 'Matilda' + 'Matt' + 'Matth'#228'us' + 'Matthew' + 'Matthias' + 'Matthieu' + 'Mattie' + 'Maude' + 'Maureen' + 'Maurice' + 'Mauricio' + 'Mauritius' + 'Maurus' + 'Mavis' + 'Max' + 'Maxence' + 'Maxime' + 'Maximilian' + 'Maximilien' + 'Maximin' + 'Maxine' + 'Maxwell' + 'May' + 'Maya' + 'Mayra' + 'Mayte' + 'Mckayla' + 'Mckenna' + 'Mckenzie' + 'Meagan' + 'Mechthild' + 'Medard' + 'Megan' + 'Meghan' + 'Meinhard' + 'Meinolf' + 'Meinrad' + 'Mekenzie' + 'Mel' + 'Melanie' + 'M'#233'lanie' + 'Melba' + 'Melchior' + 'Melia' + 'Melinda' + 'Melisa' + 'Melissa' + 'Melitta' + 'Melody' + 'Melvin' + 'Melvina' + 'Mercedes' + 'Meredith' + 'Merle' + 'Merrie' + 'Methodius' + 'Mia' + 'Micaela' + 'Micah' + 'Michael' + 'Michaela' + 'Micheal' + 'Michel' + 'Mich'#232'le' + 'Michelle' + 'Mickey' + 'Miguel' + 'Mikayla' + 'Mike' + 'Mildred' + 'Miles' + 'Millie' + 'Milton' + 'Mindy' + 'Minnie' + 'Mira' + 'Miranda' + 'Mirella' + 'Miriam' + 'Misty' + 'Mitchell' + 'Modest' + 'Mohammed' + 'Molly' + 'Mona' + 'Monica' + 'Monika' + 'Monique' + 'Monte' + 'Monty' + 'Morand' + 'Morgan' + 'Moritz' + 'Morris' + 'Moses' + 'Muhammad' + 'Muriel' + 'Murray' + 'Mya' + 'Myles' + 'Myra' + 'Myrna' + 'Myron' + 'Myrtle' + 'Mysta ' + 'Nadia' + 'Nadine' + 'Nancy' + 'Nanette' + 'Nanie' + 'Naomi' + 'Narzissus' + 'Natal' + 'Natalia' + 'Natalie' + 'Natasha' + 'Nathalie' + 'Nathan' + 'Nathanael' + 'Nathaniel' + 'Neal' + 'Neil' + 'Nell' + 'Nellie' + 'Nelson' + 'Nereus' + 'Nettie' + 'Nia' + 'Nicholas' + 'Nichole' + 'Nick' + 'Nickolas' + 'Nico' + 'Nicolas' + 'Nicole' + 'Nidgar' + 'Niels' + 'Niketius' + 'Nikki' + 'Nikodemus' + 'Nikolaus' + 'Nina' + 'Ninon' + 'Nivard' + 'Noah' + 'Noel' + 'No'#235'lle' + 'Noemi' + 'Nolan' + 'Nona' + 'Nora' + 'Norbert' + 'Norma' + 'Norman' + 'Normandia' + 'Notburg' + 'Notburga' + 'Notker ' + 'Oda' + 'Odette' + 'Odilia' + 'Odilo' + 'Odo' + 'Ofelia' + 'Ola' + 'Olaf' + 'Olga' + 'Oliva' + 'Olive' + 'Oliver' + 'Olivia' + 'Olivier' + 'Ollie' + 'Olympia' + 'Omar' + 'Omer' + 'Opal' + 'Ophrah' + 'Oprah' + 'Ora' + 'Oranna' + 'Orlando' + 'Orthold' + 'Orville' + 'Oscar' + 'Oskar' + 'Osmund' + 'Oswald' + 'Oswin' + 'Othon' + 'Otis' + 'Otmar' + 'Ottilie' + 'Otto' + 'Ottokar' + 'Owen ' + 'Pablo' + 'Paige' + 'Pam' + 'Pamela' + 'Pandora' + 'Pankratius' + 'Paola' + 'Paris' + 'Parker' + 'Pascal' + 'Paschalis' + 'Pat' + 'Paternus' + 'Patrice' + 'Patricia' + 'Patricia' + 'Patrick' + 'Patroklus' + 'Patsy' + 'Patti' + 'Patty' + 'Paul' + 'Paula' + 'Paulette' + 'Paulin' + 'Paulina' + 'Pauline' + 'Paulus' + 'Payton' + 'Pearl' + 'Pedro' + 'Peggy' + 'Penny' + 'Percy' + 'Perla' + 'Perpetua' + 'Perry' + 'Pete' + 'Peter' + 'Petra' + 'Petronilla' + 'Petrus' + 'Peyton' + 'Phil' + 'Philip' + 'Philipp' + 'Philippe' + 'Philippus' + 'Phillip' + 'Philomena' + 'Phyllis' + 'Pia' + 'Pierce' + 'Pierre' + 'Pippin' + 'Pirmin' + 'Pius' + 'Placido' + 'Podolphe' + 'Polly' + 'Polykarp' + 'Preston' + 'Prikt' + 'Primus' + 'Priscilla' + 'Priscille' + 'Priska' + 'Prokop' + 'Prosper ' + 'Quentin' + 'Quincy' + 'Quintin' + 'Quinton' + 'Quirin ' + 'Rachael' + 'Rachel' + 'Rachelle' + 'Radegund' + 'Radulf' + 'Rafael' + 'Rahel' + 'Raili' + 'Raimund' + 'Rainer' + 'Rainier' + 'Rainold' + 'Ralf' + 'Ralph' + 'Ramiro' + 'Ramon' + 'Ramona' + 'Randal' + 'Randall' + 'Randi' + 'Randolph' + 'Randy' + 'Raoul' + 'Raphael' + 'Rapha'#235'l' + 'Raphaela' + 'Raquel' + 'Ratbert' + 'Raul' + 'Raven' + 'Ray' + 'Raymond' + 'Reagan' + 'Reba' + 'Rebeca' + 'Rebecca' + 'Rebekah' + 'Rebekka' + 'Regan' + 'Regina' + 'Reginald' + 'Reginbald' + 'R'#233'gine' + 'Reginhard' + 'Reginlind' + 'Reilly' + 'Reinald' + 'Reiner' + 'Reinhard' + 'Reinhild' + 'Reinhold' + 'Remigius' + 'Rena' + 'Renate' + 'Renaud' + 'Rene' + 'Ren'#233 + 'Renea' + 'Renee' + 'Ren'#233'e' + 'Reuben' + 'Rex' + 'Reynaldo' + 'Reynold' + 'Rhabanus' + 'Rhiannon' + 'Rhoda' + 'Rhonda' + 'Ricardo' + 'Richard' + 'Richardis' + 'Richer' + 'Richild' + 'Richlinde' + 'Richmut' + 'Rick' + 'Rickey' + 'Ricki' + 'Ricky' + 'Rikki' + 'Riley' + 'Rimbert' + 'Rita' + 'Robbie' + 'Robert' + 'Roberta' + 'Roberto' + 'Robin' + 'Robyn' + 'Rocco' + 'Rochelle' + 'Rochus' + 'Rocky' + 'Rod' + 'Roderick' + 'Rodger' + 'Rodney' + 'Rodolfo' + 'Rodrigo' + 'Rogelio' + 'Roger' + 'Roland' + 'Rolando' + 'Rollie' + 'Roman' + 'Romana' + 'Romeo' + 'Rom'#233'o' + 'Romona' + 'Romuald' + 'Ron' + 'Ronald' + 'Ronan' + 'Ronda' + 'Ronnie' + 'Roosevelt' + 'Rosa' + 'Rosalia' + 'Rosalie' + 'Rosalind' + 'Rosalinda' + 'Rosamunde' + 'Rosario' + 'Roscoe' + 'Rose' + 'Roseann' + 'Roseanne' + 'Roseline' + 'Rosemarie' + 'Rosemary' + 'Rosetta' + 'Rosette' + 'Rosie' + 'Rosina' + 'Ross' + 'Roswitha' + 'Rotrud' + 'Roxanne' + 'Roy' + 'Royce' + 'Ruben' + 'Ruby' + 'Rudolf' + 'Rudolph' + 'Rudy' + 'Rufina' + 'Rufus' + 'Rupert' + 'Russell' + 'Ruth' + 'Ryan' + 'Rylee ' + 'Sabina' + 'Sabine' + 'Sadie' + 'Sallie' + 'Sally' + 'Salma' + 'Salome' + 'Salvador' + 'Salvatore' + 'Sam' + 'Samantha' + 'Sammy' + 'Samson' + 'Samuel' + 'Sandra' + 'Sandrine' + 'Sandy' + 'Santiago' + 'Santos' + 'Sara' + 'Sarah' + 'Sarina' + 'Sascha' + 'Saul' + 'Sauveur' + 'Savanna' + 'Savannah' + 'Scholastika' + 'Scott' + 'Sean' + 'Sebald' + 'Sebastian' + 'S'#233'bastien' + 'Selena' + 'Selma' + 'Seraphine' + 'Serena' + 'Sergio' + 'Serina' + 'Servatius' + 'Serverus' + 'Seth' + 'Severin' + 'S'#233'verin' + 'S'#233'verine' + 'Shane' + 'Shanna' + 'Shannon' + 'Shari' + 'Sharla' + 'Sharon' + 'Shaun' + 'Shawn' + 'Shawna' + 'Shayla' + 'Sheila' + 'Shelby' + 'Sheldon' + 'Shelia' + 'Shelley' + 'Shelly' + 'Sheri' + 'Sherman' + 'Sherri' + 'Sherrie' + 'Sherry' + 'Sheryl' + 'Shirley' + 'Sibylle' + 'Sidney' + 'Sidonius' + 'Sierra' + 'Sigbert' + 'Sigfrid' + 'Sighild' + 'Sigisbert' + 'Sigismund' + 'Siglind' + 'Sigrid' + 'Sigurd' + 'Silas' + 'Silke' + 'Silvana' + 'Silvester' + 'Silvia' + 'Silviane' + 'Simeon' + 'Simon' + 'Simone' + 'Simonette' + 'Simonne' + 'Sinead' + 'Sintbert' + 'Siwdbert' + 'Sixtus' + 'Skylar' + 'Skyler' + 'Sofia' + 'Sola' + 'Solange' + 'Soledad' + 'Solomon' + 'Sondra' + 'Sonia' + 'Sonja' + 'Sonya' + 'Sophia' + 'Sophie' + 'Spencer' + 'Stacey' + 'Staci' + 'Stacie' + 'Stacy' + 'Stan' + 'Stanislaus' + 'Stanley' + 'Star' + 'Starr' + 'Stefan' + 'St'#233'fan' + 'Stefanie' + 'Stella' + 'Stephan' + 'Stephanie' + 'St'#233'phanie' + 'Stephany' + 'Stephen' + 'Sterling' + 'Steve' + 'St'#232've' + 'Steven' + 'Stewart' + 'Stone' + 'Stuart' + 'Sturmius' + 'Sue' + 'Suitger' + 'Summer' + 'Susan' + 'Susanna' + 'Susanne' + 'Susie' + 'Suzanne' + 'Suzette' + 'Sven' + 'Swidbert' + 'Sybil' + 'Sybilla' + 'Sydney' + 'Sylvester' + 'Sylvia' + 'Sylvian' + 'Sylvie ' + 'Tabitha' + 'Talia' + 'Tamara' + 'Tami' + 'Tamia' + 'Tamika' + 'Tammie' + 'Tammy' + 'Tania' + 'Tanja' + 'Tanner' + 'Tanya' + 'Tara' + 'Tarra' + 'Taryn' + 'Tasha' + 'Tassilo' + 'Tatiana' + 'Tatyanna' + 'Tayler' + 'Taylor' + 'Ted' + 'Teddy' + 'Teresa' + 'Teri' + 'Terrance' + 'Terrell' + 'Terrence' + 'Terri' + 'Terry' + 'Tess' + 'Tessa' + 'Thea' + 'Thekla' + 'Thelma' + 'Theobald' + 'Theodard' + 'Theodor' + 'Th'#233'odor' + 'Theodora' + 'Theodore' + 'Theophil' + 'Theresa' + 'Therese' + 'Th'#233'r'#232'se' + 'Theresia' + 'Thibault' + 'Thierry' + 'Thilo' + 'Thomas' + 'Thommy' + 'Tia' + 'Tiana' + 'Tianna' + 'Tiara' + 'Tiburtius' + 'Tiffany' + 'Tillmann' + 'Tim' + 'Timmy' + 'Timoth'#233'e' + 'Timotheus' + 'Timothy' + 'Tina' + 'Titus' + 'Tobias' + 'Tobie' + 'Toby' + 'Todd' + 'Tom' + 'Tomas' + 'Tomeka' + 'Tommie' + 'Tommy' + 'Toni' + 'Tony' + 'Tonya' + 'Tori' + 'Tracey' + 'Traci' + 'Tracie' + 'Tracy' + 'Travis' + 'Trent' + 'Trenton' + 'Trevor' + 'Trey' + 'Tricia' + 'Trina' + 'Trinity' + 'Trisha' + 'Tristan' + 'Tristen' + 'Tristin' + 'Triston' + 'Troy' + 'Trudbert' + 'Trudy' + 'Tucker' + 'Turibio' + 'Tuto' + 'Ty' + 'Tyler' + 'Tylor' + 'Tyrone' + 'Tyson ' + 'Udo' + 'Ulric' + 'Ulrich' + 'Urban' + 'Urs' + 'Ursuel' + 'Ursula' + 'Uwe ' + 'Valentin' + 'Valentine' + 'Valeria' + 'Valerie' + 'Val'#233'rie' + 'Valerius' + 'Val'#233'ry' + 'Van' + 'Vance' + 'Vanda' + 'Vanesa' + 'Vanessa' + 'Veit' + 'Velma' + 'Vera' + 'Verena' + 'Verna' + 'Vernon' + 'Veronica' + 'Veronika' + 'Veronique' + 'Vicente' + 'Vickie' + 'Vicky' + 'Victoire' + 'Victor' + 'Victoria' + 'Vigilius' + 'Viktor' + 'Viktoria' + 'Vilma' + 'Vince' + 'Vincent' + 'Vincente' + 'Vincenzo' + 'Vinzenz' + 'Viola' + 'Violet' + 'Violette' + 'Virgil' + 'Virginia' + 'Virginie' + 'Vitalis' + 'Vitus' + 'Vivian' + 'Viviana' + 'Viviane' + 'Vivienne' + 'Vizelin' + 'Volker' + 'Volkmar ' + 'Wade' + 'Wala' + 'Walburga' + 'Waldemar' + 'Walfrid' + 'Wallace' + 'Walter' + 'Walto' + 'Waltraud' + 'Wanda' + 'Warren' + 'Wayne' + 'Wendelin' + 'Wendell' + 'Wendy' + 'Wenzel' + 'Werburg' + 'Werner' + 'Wesley' + 'Whitney' + 'Wido' + 'Wigand' + 'Wigbert' + 'Wigfrid' + 'Wigger' + 'Wiggo' + 'Wilard' + 'Wilbert' + 'Wilbur' + 'Wilfred' + 'Wilfredo' + 'Wilfrid' + 'Wilfried' + 'Wilhelm' + 'Wilhelmina' + 'Wilhelmine' + 'Will' + 'Willa' + 'William' + 'Willibald' + 'Willibert' + 'Willibold' + 'Willibrord' + 'Willie' + 'Willigis' + 'Willis' + 'Wilma' + 'Wilson' + 'Wiltrud' + 'Winand' + 'Winnie' + 'Winred' + 'Winston' + 'Wladimir' + 'Wolfgang' + 'Wolfhard' + 'Wolfhelm' + 'Wolfhild' + 'Wolfhold' + 'Wolfram' + 'Wolfrid' + 'Woodrow' + 'Wyatt ' + 'Xavier ' + 'Yasmin' + 'Yasmine' + 'Yasmineen' + 'Yesenia' + 'Yolanda' + 'Yves' + 'Yvette' + 'Yvonne ' + 'Zachariah' + 'Zacharias' + 'Zacharie' + 'Zachary' + 'Zachery' + 'Zane' + 'Zarah' + 'Zeno' + 'Zion' + 'Zita' + 'Zoe' + 'Zo'#235 + 'Zoey ' + #196'gidius' + #196'milia ' + #214'dipus') + ScrollBars = ssVertical + TabOrder = 0 + end + object Panel1: TPanel + Left = 185 + Top = 0 + Width = 185 + Height = 441 + Align = alLeft + TabOrder = 1 + object Button1: TButton + Left = 56 + Top = 16 + Width = 75 + Height = 25 + Caption = 'Unsort' + TabOrder = 0 + OnClick = Button1Click + end + object Button2: TButton + Left = 56 + Top = 80 + Width = 75 + Height = 25 + Caption = 'BubbleDesc' + TabOrder = 1 + OnClick = Button2Click + end + object Button3: TButton + Left = 56 + Top = 152 + Width = 75 + Height = 25 + Caption = 'QuickDesc' + TabOrder = 2 + OnClick = Button3Click + end + object Button4: TButton + Left = 56 + Top = 56 + Width = 75 + Height = 25 + Caption = 'BubbleAsc' + TabOrder = 3 + OnClick = Button4Click + end + object Button5: TButton + Left = 56 + Top = 128 + Width = 75 + Height = 25 + Caption = 'QuickAsc' + TabOrder = 4 + OnClick = Button5Click + end + object Button7: TButton + Left = 56 + Top = 224 + Width = 75 + Height = 25 + Caption = 'ShellDesc' + TabOrder = 6 + OnClick = Button7Click + end + object Button6: TButton + Left = 56 + Top = 200 + Width = 75 + Height = 25 + Caption = 'ShellAsc' + TabOrder = 5 + OnClick = Button6Click + end + object Button9: TButton + Left = 56 + Top = 296 + Width = 75 + Height = 25 + Caption = 'MinDesc' + TabOrder = 8 + OnClick = Button9Click + end + object Button8: TButton + Left = 56 + Top = 272 + Width = 75 + Height = 25 + Caption = 'MinAsc' + TabOrder = 7 + OnClick = Button8Click + end + object Button10: TButton + Left = 56 + Top = 344 + Width = 75 + Height = 25 + Caption = 'HeapAsc' + TabOrder = 9 + OnClick = Button10Click + end + object Button11: TButton + Left = 56 + Top = 368 + Width = 75 + Height = 25 + Caption = 'HeapDesc' + TabOrder = 10 + OnClick = Button11Click + end + end + object Memo2: TMemo + Left = 370 + Top = 0 + Width = 310 + Height = 441 + Align = alClient + ScrollBars = ssVertical + TabOrder = 2 + end +end diff --git a/Unit1.pas b/Unit1.pas new file mode 100644 index 0000000..cb42c7f --- /dev/null +++ b/Unit1.pas @@ -0,0 +1,215 @@ +unit Unit1; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, StdCtrls, ExtCtrls,sort; + +type + TForm1 = class(TForm) + Memo1: TMemo; + Panel1: TPanel; + Memo2: TMemo; + Button1: TButton; + Button2: TButton; + Button3: TButton; + Button4: TButton; + Button5: TButton; + Button6: TButton; + Button7: TButton; + Button8: TButton; + Button9: TButton; + Button10: TButton; + Button11: TButton; + procedure Button1Click(Sender: TObject); + procedure FormCreate(Sender: TObject); + procedure Button2Click(Sender: TObject); + procedure Button3Click(Sender: TObject); + procedure Button4Click(Sender: TObject); + procedure Button5Click(Sender: TObject); + procedure Button6Click(Sender: TObject); + procedure Button7Click(Sender: TObject); + procedure Button8Click(Sender: TObject); + procedure Button9Click(Sender: TObject); + procedure Button10Click(Sender: TObject); + procedure Button11Click(Sender: TObject); + private + { Private-Deklarationen } + public + { Public-Deklarationen } + end; + +var + Form1: TForm1; + +implementation + +{$R *.dfm} + +procedure TForm1.Button1Click(Sender: TObject); +var i,m,n:integer; + k:array of boolean; +begin + + memo2.Clear; + + setlength(k,memo1.lines.count); + for i:=0 to length(k)-1 do k[i]:=false; + + m:=0; + while m(SortList[j+1]) then + begin + zwischen := SortList[j]; + SortList[j] := SortList[j+1]; + SortList[j+1] := zwischen; + inc(tauschs); + Application.ProcessMessages; + end; + end; + inc(durchlaufe); + Application.ProcessMessages; + end; + +end; + +procedure BubbleDesc(var tauschs,durchlaufe:integer;var SortList:TSortList); +var i,j:integer; + zwischen:string; +begin + durchlaufe:=0; + tauschs:=0; + for i := length(SortList)-1 downto 1 do + begin + for j := 0 to i-1 do + begin + if (SortList[j]) < (SortList[j+1]) then + begin + zwischen := SortList[j]; + SortList[j] := SortList[j+1]; + SortList[j+1] := zwischen; + inc(tauschs); + Application.ProcessMessages; + end; + end; + inc(durchlaufe); + Application.ProcessMessages; + end; + +end; + +procedure QuickSortDesc(erstes,letztes : integer;var SortList:TSortList); +function Divide(erstes, letztes : integer;var SortList:TSortList) : integer; +procedure Change(a, b : integer;var SortList:TSortList); +var Dummy : string; +begin + Dummy := SortList[a]; + SortList[a] := SortList[b]; + SortList[b] := Dummy; +// inc(Changes); +end; +var i,j,pivot: integer; +begin + i := erstes-1; + j := letztes ; + pivot := letztes; + while true do begin + inc(i); + while SortList[i] > SortList[pivot] do inc(i); + dec(j); + while (SortList[pivot] > SortList[j]) and (j > erstes) do dec(j); + if i >= j then break; + Change(i, j,sortlist); + end; + Change(i, pivot,sortlist); + result := i; +end; + +var teiler : integer; +begin + + if letztes > erstes then + begin + teiler := Divide(erstes, letztes,SortList); + quicksortdesc(erstes, teiler-1,SortList); + quicksortdesc(teiler+1, letztes,SortList); + end; + +end; + +procedure QuickSortAsc(erstes,letztes : integer;var SortList:TSortList); +function Divide(erstes, letztes : integer;var SortList:TSortList) : integer; +procedure Change(a, b : integer;var SortList:TSortList); +var Dummy : string; +begin + Dummy := SortList[a]; + SortList[a] := SortList[b]; + SortList[b] := Dummy; +// inc(Changes); +end; +var i,j,pivot: integer; +begin + i := erstes-1; + j := letztes ; + pivot := letztes; + while true do begin + inc(i); + while SortList[i] < SortList[pivot] do inc(i); + dec(j); + while (SortList[pivot] < SortList[j]) and (j > erstes) do dec(j); + if i >= j then break; + Change(i, j,sortlist); + end; + Change(i, pivot,sortlist); + result := i; +end; + +var teiler : integer; +begin + + if letztes > erstes then + begin + teiler := Divide(erstes, letztes,SortList); + quicksortasc(erstes, teiler-1,SortList); + quicksortasc(teiler+1, letztes,SortList); + end; + +end; + +procedure ShellSortAsc(var SortList:array of string); +var + i, j, h, N: integer; + v: string; +begin + N := length(SortList)-1; + h := 0; + repeat + h := ( 3 * h ) + 1; + until h > N; + repeat + h := ( h div 3 ); + for i := ( h + 1) to N do begin + v := SortList[i]; + j := i; + while ( ( j >= h ) and ( SortList[j-h] > v ) ) do begin + SortList[j] := SortList[j - h]; + dec( j, h ); + end; + SortList[j] := v; + end; + until + h = 1; +end; + +procedure ShellSortDesc(var SortList:array of string); +var + i, j, h, N: integer; + v: string; +begin + N := length(SortList)-1; + h := 0; + repeat + h := ( 3 * h ) + 1; + until h > N; + repeat + h := ( h div 3 ); + for i := ( h + 1 ) to N do begin + v := SortList[i]; + j := i; + while ( ( j >= h ) and ( SortList[j-h] < v ) ) do begin + SortList[j] := SortList[j - h]; + dec( j, h ); + end; + SortList[j] := v; + end; + until + h = 1; +end; + +procedure MinSortAsc(var SortList: array of string); +var + i, j : LongInt; { Zaehlvariablen } + Min: LongInt; { Zwischenspeicher, Minimum } + Temp:string; +begin + for i := 0 to High(SortList) - 1 do + begin + Min := i; + for j := i + 1 to High(SortList) do + if SortList[j] < SortList[Min] then Min := j; + Temp := SortList[Min]; + SortList[Min] := SortList[i]; + SortList[i] := Temp; + end; +end; + +procedure MinSortDesc(var SortList: array of string); +var + i, j : LongInt; { Zaehlvariablen } + Min: LongInt; { Zwischenspeicher, Minimum } + Temp:string; +begin + for i := 0 to High(SortList) - 1 do + begin + Min := i; + for j := i + 1 to High(SortList) do + if SortList[j] > SortList[Min] then Min := j; + Temp := SortList[Min]; + SortList[Min] := SortList[i]; + SortList[i] := Temp; + end; +end; + +procedure HeapSortAsc(var SortList:array of string); + + procedure genheap(var f:array of string; var heapsize:integer); { Heap (mit linearem Aufwand) aufbauen } + var i,j,max:integer; + var temp:String; + begin + for i := (heapsize div 2) downto 0 do begin { zweite Hälfte des Feldes braucht nicht betrachtet werden } + j:=i; + while j <= (heapsize div 2) do begin + max := j * 2 + 1; { finde Maximum der (beiden) Söhne } + if max > heapsize then dec(max) + else if f[max-1] > f[max] then dec(max); + if f[j] < f[max] then begin { ggf. tauschen } + temp := f[j]; + f[j] := f[max]; + f[max] := temp; + end; + j := max; + end; + end; + end; + + function popmax(var f:array of string;heapsize:integer):String; + var i,max:integer; + var temp:String; + begin + popmax := f[1]; + f[1] := f[heapsize]; + i := 1; + while i <= (heapsize div 2) do begin { letztes Element an Anfang setzen und versickern lassen } + max := i * 2 + 1; { finde Maximum der (beiden) Söhne } + if max > heapsize then dec(max) + else if f[max-1] > f[max] then dec(max); + if f[i] < f[max] then begin { ggf. tauschen } + temp := f[i]; + f[i] := f[max]; + f[max] := temp; + end; + i := max; + end; + end; + var i,SIZE:integer; +begin + SIZE := Length(SortList)-1; + genheap(SortList,SIZE); + for i:=SIZE downto 0 do SortList[i] := popmax(SortList,i); +end; + +end.