begin process at 2012 02 13 13:20:45
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Maths & Algorithmes

 > TRI PAR INSERTION AVEC SENTINELLE

TRI PAR INSERTION AVEC SENTINELLE


 Information sur la source



 Description

Il s'agit d'un tri classique et peu efficace, mais qui montre l'usage d'une sentinelle.

Source

  • #include "stdafx.h"
  • #include "stdlib.h"
  • #include "time.h"
  • #define DIM 10
  • int main(int argc, char* argv[])
  • {
  • int i,j, t[DIM+1];
  • t[1] = 1;
  • srand(unsigned(time(NULL)));
  • // Tirage
  • for ( i = 2; i <= DIM; i++ ) {
  • j = rand()%i+1;
  • t[i] = t[j];
  • t[j] = i;
  • }
  • // Affichage
  • for ( i = 1; i <= DIM; i++ )
  • printf("t[%d] = %d\n", i, t[i]);
  • puts("");
  • // Tri
  • int aux;
  • for ( i = 1; i <= DIM - 1; i++ ) {
  • aux = t [i + 1];
  • t[0] = aux; // sentinelle
  • j = i;
  • while (t[j] > aux) { t[j+1] = t[j]; j = j - 1; }
  • t[j+1] = aux;
  • }
  • // Affichage
  • for ( i = 1; i <= DIM; i++ )
  • printf("t[%d] = %d\n", i, t[i]);
  • return 0;
  • }
#include "stdafx.h"
#include "stdlib.h"
#include "time.h"

#define DIM 10

int main(int argc, char* argv[])
{

    int i,j, t[DIM+1];

    t[1] = 1;
    srand(unsigned(time(NULL)));

    // Tirage
    for ( i = 2; i <= DIM; i++ ) {
        j = rand()%i+1;
        t[i] = t[j];
        t[j] = i;
    }

    // Affichage
    for ( i = 1; i <= DIM; i++ )
        printf("t[%d] = %d\n", i, t[i]);

    puts("");

    // Tri
    int aux;
    for ( i = 1; i <= DIM - 1; i++ ) {
	aux = t [i + 1];
	t[0] = aux; // sentinelle
	j = i;
	while (t[j] > aux) { t[j+1] = t[j]; j = j - 1; }
	t[j+1] = aux;
    }

    // Affichage
    for ( i = 1; i <= DIM; i++ )
        printf("t[%d] = %d\n", i, t[i]);

    return 0;
}



 Sources du même auteur

GÉNÉRATION D'UNE LISTE DES COMBINAISONS SANS RÉPÉTITION D'ÉL...
Source avec Zip COMMUNICATION INTER PROCESSUS PAR IPC SOUS *NIX
Source avec Zip SQUELETTE DE COMMUNICATION PAR SOCKET EN MODE CONNECTÉ POUR ...
GÉNÉRATION D'UNE PERMUTATION ALÉATOIRE, SANS RETIRAGE

 Sources de la même categorie

Source avec Zip UN EXAMPLE D'APPLICATION EN CUDA DE L'ALGORITHME DE SCAN POU... par oguzaras
Source avec Zip Source avec une capture CHIFFREMENT DE VIGENERE par lajouad
Source avec Zip Source avec une capture ANALYSE SYNTAXIQUE par lajouad
Source avec Zip Source avec une capture STRUCTURE D'UNE MATRICE PAR LES LISTE LINÉAIRE (NON CONTUGUS... par benzarabel
Source avec Zip Source avec une capture DESSINER UNE ARBRE BINAIRE( MODE CONSOLE): par benzarabel

 Sources en rapport avec celle ci

LES OPÉRATIONS DE LA LISTE CHAINÉE par smaili
Source avec Zip Source avec une capture ALGORITHME DE TRI D'UN TABLEAU PAR ORDRE CROISSANT OU DÉCROI... par Thuzhen
Source avec Zip COMPARATIF DES TRIS QUADRATIQUE par gnairod
Source avec Zip LE QUICKSORT NON-RECURSIF ET L'IMPACT DE L'INSERTIONSORT SUR... par nickydaquick
Source avec Zip ALGORITHMES DE TRIS par NNAS

Commentaires et avis

Commentaire de Masterweb95800 le 02/11/2009 11:24:05

Bonjour AlexN,

J'avoue que je n'est pas lancé ton code.

Par contre tout ce qui est de la forme i+1, j= j-1 etc... utilise les opérateur "++" et "--" niveau rapidité c'est les meilleurs ;)

Donc toi tu as:
// Tri
    int aux;
    for ( i = 1; i <= DIM - 1; i++ ) {
aux = t [i + 1];
t[0] = aux; // sentinelle
j = i;
while (t[j] > aux) { t[j+1] = t[j]; j = j - 1; }
t[j+1] = aux;
    }

Moi j'aurais plutôt:
// Tri
    int aux;
    for ( i = 1; i <= DIM - 1; i++ ) {
aux = t [i++];
t[0] = aux; // sentinelle
j = i;
while (t[j] > aux) { t[j+1] = t[j]; j--; }
t[j++] = aux;
    }

ces opérateurs sont implémenté de façon à que le processeur face les calcules beaucoup plus rapidement que avec des i+1, ou i = i +1...

d'ailleur sache que tu peut utiliser aussi ++i ou --i, mais attention le sens est différent de i++ ou i--.

je dis ça peut être tu le sais déjà mais je trouve qu'il vaut mieux optimiser au maximum son code ;) (celà deviens très nécessiteux quand on a de longue boucle.

Autrement ton code manque de beaucoup de commentaires, ce qui pourrais faciliter la lecture de celui-ci. et d'expliquer pourquoi pas ce qu'est une sentinelle pour ceux qui ne savent pas. (comme moi par exemple lol ^^)

Je te fais aucunes reproches ce ne sont que des avis personnel ;)

Cordialement,
Masterweb.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Tri par insertion sur listes simplement chainées [ par ichigoZ710 ] Bonjour, voilà, je vous explique rapidement mon problème, je dois élaborer une procédure de tri par insertion sur une liste qui vient en paramètre de tri insertion langage C et appel de fonction [ par washh ] Bonjour,Je débute en langage C et j'ai écrit l'algorithme du tri d'un tableau contenant des chaines de caractères, mais dès la compilation, le program Tri par insertion sur liste simplement chainée [ par Jordy89 ] Bonjour,Dans le cadre de la manipulation d'une liste chaînée, je suis amené à effectuer un tri; Je me suis renseigné à gauche et à droite, et il appar tri par insertion dans une liste chaînée [ par titi4659 ] Bonjour,j'ai un problème avec une liste chaînée.j'ai une liste d'element que j'arrive a récupéré mais je souhaiterai que lorsque je récupère un elemen PB sortitems() [ par titi4659 ] Bonjour,J'ai une liste d'element de type CListCtrl je souhaite la trié selon la colonne:Pour cela j'utilise la fonction SortItems(mysort, num_colonne) Complexité de l'algorithme de Tri Fusion [ par ousin ] Salut tout le monde, je voudrais de l'aide pour demontrer mathematiquement en urilisant la resolution des reccurences que la complexité du Tri Fusion insertion grille Excel / HTML [ par yepla75 ] Salut,Je fais un programme en C qui crée un fichier Excel, et envoie des valeurs dedans, en utilisant du code HTML (je débute). A la fin du traitement tri du couvain [ par souf2casa ] bonjour je cherche un projet de simulation du tri du couvain d'une fourmilière ( projet de language C) boucle de tri d'etudiant [ par yanboui ] merci pour votre aide mais j'ai trouvé des difficultés concernant la boucle de classer le tableaud'étudiants par ordre de mérite est ce que vou pouver


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,250 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales