51 routines :

*AppleScriptsVanilla*
ascii_to_HTML
Average
Calculator
Calendar
Count_item
cut_text
days_week
EAN13
Encrypt-Decrypt
FactPremier
French_Vanilla_Dotted_Date
French_Vanilla_Dotted_Date2
Hexa_to_Bin
Last_month
list_erase
list_insert
list_replace
ListeDiviseurs
ListePremiers
Minuscule
NombreLong
NombreLong2
NomExtension
num_item
num_month
num_month2
num_week
number_format
number_format2
Paques
PGCD
PGCD2
reverse_string
Roman_to_Arab
round_decimal
search_email
search_replace
search_URL
SepNbre
SepNbre2
snip_text
stat
TauxPermut
TauxTransform
the_left
the_right
TriBulle
TriLineaire
week_and_year
XOR
ZeroDouble

TriBulle

Syntaxe

TriBulle(LaListe)
Range les éléments d'une liste de nombres par ordre croissant, ou d'une liste de chaînes de caractères pas ordre alphabétique. Le paramètre et le résultat sont au format liste.

Exemple

TriBulle({1, 2, 8, 4, 6, 7, 5, 3, 9})
---> {1, 2, 3, 4, 5, 6, 7, 8, 9}
TriBulle({"pomme", "abricot", "poire", "banane", "raisin", "orange"})
---> {"abricot", "banane", "orange", "poire", "pomme", "raisin"}

Script

on TriBulle(LaListe)
set n to the length of LaListe
repeat with i from 1 to n
set flag_inversion to false
repeat with j from 1 to n - i
if item j of LaListe > item (j + 1) of LaListe then
set temp to item j of LaListe
set item j of LaListe to item (j + 1) of LaListe
set item (j + 1) of LaListe to temp
set flag_inversion to true
end if
end repeat
if flag_inversion is false then exit repeat
end repeat
return LaListe
end TriBulle

Remarque

Les nombres les plus "lourds" tombent au fond de la liste, les plus légers remontent à la surface. L'index i pointe l'élément 1 de la liste, puis avance élément par élément. L'élément i est comparé avec celui i+1. Si le 1er est supérieur les 2 éléments sont inversés. Lorsqu'un balayage de i est terminé, on recommence à balayer, mais on s'arrête un élément avant le dernier balayage (n-i) car l'élément le plus lourd doit déjà avoir sombré au fond. La boucle s'arrète quand un balayage complet n'a pas inversé d'éléments ou quand la longueur du balayage est réduite à 0. la variable booléenne "flag_inversion" teste à la fin de chaque balayage si une inversion a eu lieu.

Site scripté avec HyperCard ©1987-1998 Apple Computer, Inc.
Mise à jour le 19/01/10 à 08:45:57