i++; else{ c[i]--; v[j]=i; j++; } }
Question3
Andetrierleslettrestransitantparunecentredetripostal(enBelgique),ilestcommodedeprocéder delafaçonsuivante.Onutilise10paniersquireçoiventleslettresenfonctiondeleurcodepostal. Toutesleslettresdontlecodepostalestcomprisentre1000et1999vontdanslepanier1,carelles sontdestinéesàlaRégiondeBruxelles;toutescellesdontlecodepostalestcomprisentre2000et 2999vontdanslepanier2,quicorrespondàlarégionanversoise,
etc
.Cettepremièresélectionpermet dedégrossirletriducourrier,carchaquepanierpourraensuiteêtretriédefaçonindépendante desautres. Surbasedecetteidée,onpeutproposeruneméthodepermettantdetrierunelisted'entiers comprisentre
1
et
N
(où
N
estuneconstanteglobaleconnue).Chaqueentierpeutêtreassimiléàune lettre.Pourxerlesidées,considéronslaliste
L
suivante,pour
N
= 14
.
9 11 3 2 7 4
Onxeensuiteuneconstante
K
(supposéeglobaleetconnue),quicorrespond,dansnotreexemple ci-dessus,aunombredepaniers. Letriconsisteradoncàcréer
K
listesdanslesquellesoninsèrelesélémentsdelaliste
L
lesunsaprès lesautres,enfonctiondelavaleurdeleurchamp
info
:lesélémentsdontl'informationestcomprise entre1et
N
/
K
irontdanslapremièreliste,ceuxdontl'informationestentre
N
/
K
+ 1
et
2
×
N
/
K
irontdanslasecondeliste,etainsidesuite(où
estlafonctionplancher).Lestêtesdeces
K
listes serontstockéesdansuntableau
elem*T[K]
(latêtedela
i
e
listedans
T[i]
).Surnotreexemple,et pour
K
= 3
,onobtient:
113 2 49 7
T
Ensuite,ontriechaquelistede
T
àl'aided'uneprocédurestandard.Finalement,onobtientla liste
L
triéeenassemblantles
K
listesdutableau
T
,detellemanièrequelesélémentsdelaliste
T[1]
apparaissentd'abord,puisceuxde
T[2]
,
T[3]
,etc.
2