Les Snippets

Connexion

Insérer une valeur dans un tableau de taille constante si plus grande que plus petite valeur du tableau

Niveau requis pour utiliser/comprendre cette source : 1 ( Débutant )
Créé le 30/03/2007 01:32:55 et initié par japee [Liste]
Date de mise à jour : 02/04/2007 13:10:38
Vue : 9265
Catégorie(s) : Maths
Langages dispo pour ce code :
- Delphi 5
- Delphi 5
- Javascript



Langage : Delphi 5
Date ajout : 30/03/2007
Posté par japee [Liste]
DateMAJ : 30/03/2007
function InsertIfEnough(Value: Integer; var Table: array of Integer): Integer;
var
  Max, Index, i: Integer;
begin
  Max := Length(Table) - 1;
  for Index := 0 to Max do
    if Value > Table[Index] then
      Break;
  if Index < Max + 1 then
  begin
    Result := Index;
    for i := Max downto Index + 1 do
      Table[i] := Table[i - 1];
    Table[Index] := Value;
  end
  else
    Result := -1;
end;
Remarque :
Cette fonction permet d'insérer dans un tableau d'entiers une valeur,
à la condition que cette valeur soit supérieure à la plus petite valeur
du tableau, cette dernière étant alors supprimée, afin de garder un nombre
constant de valeurs.
Dans ce cas, la valeur retournée correspond à l'index de la position occupée
dans le tableau, sinon la valeur de retour est -1.
Cette fonction gère donc parfaitement un tableau de scores de jeu ("Hall of fame")
qui ne conservera que les x meilleurs scores.
Langage : Delphi 5
Date ajout : 30/03/2007
Posté par f0xi [Liste]
function InsertIfEnough(const Value: Integer; var Table: array of Integer): Integer;
var
  Max,Index : Integer;
begin
  Max    := High(Table);
  Index  := Max;
  if Value < Table[Index] then
     result := -1
  else
  begin
    while (Value > Table[Index]) and (index > -1) do
    begin
      if Index < Max then
         Table[Index+1] := Table[Index];
      Table[Index] := Value;
      Index := Index-1;
    end;
    result := index+1;
  end;
end;

function InsertIfEnoughNS(const Value: Integer; var Table: array of Integer): Integer;
var
  VMin,IMin, Len, N : Integer;
begin
  Len  := High(Table);
  IMin := Len;
  For N := 0 to Len-1 do
      if Table[N] < Table[IMin] then
         IMin := N;
  if Table[IMin] < Value then
     Table[IMin] = Value;
  result := IMin;
end;

Remarque :
Alternative plus performantes, pour tableaux triés (1ere fonction) par ordre croissant (indice 0 contient la plus grande valeur) et pour les tableaux non triés (2eme fonction).

Dans la premiere fonction, Value "remonte" dans le tableau tant qu'elle est superieure a la valeur du tableau a l'indice en cours.
Dans la deuxieme methode, "Value" remplace la plus petite valeur du tableau si cette derniere est inferieure a Value.
Langage : Javascript
Date ajout : 01/04/2007
Posté par stfou [Liste]
DateMAJ : 02/04/2007
tab.sort();
if(valeur>tab[tab.length])
{
    tab.pop();
    tab.push(valeur);
}
Remarque :
Attention ! Modifie le tableau en entrée (le trie)

Snippets en rapport avec : Tableau, Valeur, Insertion, Constant, Score



Codes sources en rapport avec : Tableau, Valeur, Insertion, Constant, Score

{Visual Basic, VB6, VB.NET, VB 2005} COMPRESSION
Fonction pour comprimer un tableau de byte...

{JAVA / J2EE} CALCUL DE LA VALEUR MAXIMALE D'UN TABLEAU
Un petit code qui permet de voir quelle est la plus grande valeur(int) d'un tableau. Un peu d'indulg...

{Visual Basic, VB6, VB.NET, VB 2005} EXPORT TABLEAU EXCEL EN BBCODE
Petite source en vba excel permettant d'exporter le tableau Excel en BBcode (tableau basic, seul l'é...

{Visual Basic, VB6, VB.NET, VB 2005} TRI AVEC VISUALISATION
Voila une source pour trié des chiffres dans un tableau a 1 dimensions. Il y a plusieurs méthodes de...

{Javascript / DHTML} TRI DÉCROISSANT ET CROISSANT D'UN TABLEAU DYNAMIQUE REMPLIE PAR UN INTERNAUTE
Coucou tout le monde, bonje ne l'ai pas trouvé sur ce site donc peut-être qu'il n'y est pas : j'a...

{Javascript / DHTML} PALETTE DE COULEURS
Une palette de couleurs dans un bloc de type div. Le script est fait de trois boucles les unes dan...

{Javascript / DHTML} TEXTAREA : LIMITER LA LARGEUR ET LA HAUTEUR DU TEXTE SAISIE
La plupart des contrôles de saisie dans un champ textarea se limite à la longueur du texte. L'int...

{JAVA / J2EE} NOMBRES PREMIERS PAR LE CRIBLE D'ERATOSTHÈNE VERSION OPTIMISÉE
Pour trouver tous les nombres premiers de 2 à Max, le principe est le suivant : 1. Construire l'ens...

{C / C++ / C++.NET} [C][RTF] EXEMPLE DE TABLEAU EN RTF (POUR RICHEDIT)
Vue qu'il y a beaucoup de demande, pour faire des tableaux et que ce n'est pas très compliqué ^^, je...

{C / C++ / C++.NET} COMPARATIF DES TRIS QUADRATIQUE
Propose un moyen de comparer les principaux algorithmes de tri quadratique. Tri à bulles, Tri par sé...