, hurtigt tip: gennemførelse af boblen i as3,,,,, andel,,,,,,,,,,,,,,, det cyber - mandag envato tuts + kurser vil blive reduceret til $3.- og' t miss.,, i denne hurtige tip, jeg vil vise dig, hvordan og hvorfor den boble form - algoritmen virker, og hvordan til at gennemføre den i as3.du ender med en klasse, som du kan bruge i en flash - projektet, for sortering en vifte.,,,, endelige resultat forpremiere, her er en simpel demo af resultatet af den boble en algoritme, naturligvis denne stg beviser ikke meget på egen hånd!tag kilden filer, og du kan redigere input system selv.,, trin 1: at skabe bubblesort klasse som denne algoritme vil blive anvendt mere end én gang, det er en god idé at indføre en klasse for det, så at vi sagtens kan bruge det i as3 projekt:, oprette en grundlæggende flash - projekt og i projektet mappe, skabe en fil, bubblesort.,.vi vil skabe en testenhed her også, så vi kan teste det.), hvis du ikke ved, hvordan man arbejder med klasser, tjek denne lektion: hvordan man bruger et dokument, klasse i -., kan vi ikke har brug for producenten, så få det væk!klassen skal se sådan ud:,,, - pakken (offentlige klasse bubblesort {}}, trin 2: hvordan algoritmen virker denne algoritme ikke er den hurtigste og mest effektive metode til sortering af en række tal, men det er den nemmeste at forstå. dette billede beløb på hvert trin op. hvert par numre er sammenlignet med udgangspunkt i slutningen, og byttede (ved hjælp af et "ekstra", temperatur, variabel), hvis de er i den forkerte rækkefølge., når de på hinanden følgende par er blevet kontrolleret, det garanterer, at antallet i begyndelsen er det største antal i den rækkefølge, vi gentager at tjekke samtlige par numre, bortset fra antallet i starten.når alle de på hinanden følgende par er blevet kontrolleret, og vi ved, at de første to numre i den rækkefølge, er den korrekte rækkefølge (de er det største og næststørste).vi fortsætter, indtil vi har alle numre i den korrekte rækkefølge. det kaldes "boble form", fordi den på hver passerer gennem nettet, det største antal "tættere" på toppen af det system, som en boble i vand. lad os begynde at skrive koden.vi kalder den vigtigste funktion, bsort():,,, - pakken (offentlige klasse bubblesort {offentlige funktion bsort (arr - system, sorttype: string): system {var vikar: string; hvis (sorttype. tolocalelowercase() = = "ned") {} andre, hvis (sorttype. tolocalelowercase() = = "op". {} andre kaste nye fejl ("har du en fejl, når det bsort() funktion, brug" stigende eller faldende for sorttype! ")og vende arr;}}}, funktion, får to parametre.den første parameter, arr, vil være det system skal løses; den anden paramter, sorttype, skal anvendes til at afgøre, om de bruger vil have antennerne skal sorteres i stigende eller faldende orden. i den funktion, erklærer vi, temperatur, variable, som vil holde de elementer af array i tilfælde af, at vi har brug for at udveksle de to elementer.du kan spørge sig selv, hvorfor det er ikke et nummer.det er, fordi vores klasse vil være i stand til at håndtere snor arrays, sortere dem alfabetisk; vi kan omsætte antal tråde og tilbage igen, men vi kan ikke omdanne tråde til tal og tilbage igen, så vi bruger en snor for denne variabel, bare for at være sikker, vi bruger en, hvis, - andet, block dele vores kodeks i to grene, afhængigt af, hvilken retning brugeren ønsker at løse.(hvis brugeren ikke give et gyldigt valg, programmet vil affyre en fejl.), er forskellen mellem den kode i hver filial vil kun være en karakter: enten < eller >,., lad os skrive algoritmen.vi begynder med de faldende del:,,, - pakken (offentlige klasse bubblesort {offentlige funktion bsort (arr - system, sorttype: string): system {var vikar: string; hvis (sorttype. tolocalelowercase() = = "ned") (for (var - jeg: uint = 0. jeg < arr.length. jeg + +) (for (var - j: uint = arr.length-1; j > jeg; j) {}}} andre, hvis (sorttype. tolocalelowercase() = = "op") {} andre kaste nye fejl ("har du en fejl, når det bsort() funktion, brug" stigende eller faldende for sorttype! ")og vende arr;}}}, som du kan se, bruger vi satte sig for, havregryn.man går fra det første element i den sidste del af den mængde, den anden går baglæns, lad os undersøge det indre "j" loop.som tidligere diagram viser, vi begynder ved at sammenligne de sidste to elementer i det system, der er arr [j-1] og arr [j] (i den første udgave).hvis arr - j-1] er mindre end arr [j], skal de være byttet. i begge tilfælde vi trække fra, j, (gennem ", j - -" kalde på linje 131), som ændrer som par tal skal sammenlignes med den næste loop.,, j, begynder med en værdi af arr.length-1, og ender med en værdi af 1, hvilket betyder, at de indre, loop kontrol hver på hinanden følgende par, begyndende med de sidste par (, j, er, arr.length-1,) og slutter med de første par (hvor, j = 1,), lad os se på de ydre "," loop.når alle par er blevet kontrolleret og byttede som nødvendig, og jeg, er øget (gennem ", jeg + +," ring i overensstemmelse artikel 129).det betyder, at næste gang, jeg vil begynde på, arr.length-1, igen, men i, 2, denne gang, hvilket betyder, at de første par i den rækkefølge, vil ikke blive kontrolleret eller byttede.det er præcis det, vi ønsker, da vi ved, at det første nummer er i korrekt stilling. som det foregår, i sidste ende vil der kun være to elementer, der skal kontrolleres i den indre cirkel.når de er færdige, og vi ved, at vi har ordnet antennerne!her er, hvad det ser ud til kode: for (var - jeg: uint = 0. jeg < arr.length; jeg + +) (for (var - j: uint = arr.length-1; j > jeg; j.) (hvis (arr [j-1] < arr [j]) (vikar = arr [j-1]; arr [j-1] = arr [j]; arr [j] = temp.}), og den algoritme er klar!nu kan vi bruge den samme logik at skabe opstigende form:, behøver man blot at ændre sammenligningsoperator i hvis blok af indvendige volumen:,, pakke (offentlige klasse bubblesort {offentlige funktion bsort (arr - system, sorttype: string): system {var vikar: string; hvis (sorttype. tolocalelowercase() = = "ned") (for (var - jeg: uint = 0. jeg < arr.length; jeg + +) (for (var - j: uint = arr.length-1; j > jeg; j.) (hvis (arr [j-1] < arr [j]) (temperatur = arr [j-1]; arr [j-1] = arr [j]; arr [j] = temp.}}}} andre, hvis (sorttype. tolocalelowercase() = = "op") (for (var k: uint = 0; k < arr.length; k + +) (for (var - l uint = arr.lengt:h - 1, l > k og l.) (hvis (arr [l - 1] > arr [l]) (vikar = arr [l - 1]; arr [l - 1] = arr [l]; arr [l] = temp.}}}} andre {kaste nye fejl ("i en fejl, når det bsort() funktion, brug" stigende eller faldende for sorttype! ");) afkast arr;}}}, trin 3: at skabe en prøve af anvendelsen, skabe en ny flash - fil, tester. fia, i den samme mappe, som bubblesort.,.skabe to dynamiske tekstfelter, navn, input_arr, og den anden, output_arr,.,, efter at skabe udseende, vi skal skabe og forbinde dokument klasse., skabe en fil, tester.as og forbinder det med, tester. ned, nu kan vi bruge vores klasse i - tester.:,,, - pakken (import bubblesort; import flash.display.movieclip; offentlige klasse tester udvider movieclip {private var bs: bubblesort = nye bubblesort(); offentlig funktion tester() {var ar: array = [5,7,9,8,1,3,6,2,4,5,0] input_arr.text = ru tostring(); ar = bs. bsort (ar "ned"); output_arr.text = ru tostring();}}}, i det, vi kalder den, bsort(), funktion af vores variabel bs, (der er et eksempel på, bubblesort,):, r = bs. bsort (ar "op"); denne funktion returnerer et system, så vi kan tildele denne som than nye værdi af vores oprindelige input array., gemme alt det og prøve dit arbejde.,, konklusion i denne lektion vi skabte en funktion til at hjælpe os sådan et system.vi kan forbedre effektiviteten. for mere på det, kan du læse wikipedia - boble, hvis du virkelig ønsker at se, hvor hurtigt denne algoritme er i forhold til de andre muligheder (som quicksort), tage et kig på sortering algoritmer. kom.