Bonjour à tous,
J'ai écrit un programme qui recherches des éléments dans un tableau à deux dimensions par ordre croissant. Puis qui range les indices associés dans une file fifo. Mon souci c'est que l'algorithme que j'utilise parcours tout le tableau, il est de fait très lent.
Quelqu'un aurait t-il une autre idée d'algo plus rapide ?
J'ai mis une illustration de mon algorithme ci dessous :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
 
 
  int main()
  {
   register  unsigned int i,j,k; 
   int nrow=4,ncol=4;
   unsigned int size_tab=nrow*ncol,size_tri;
   int *p_temp=NULL,p[2];
   double *tri=NULL,tab[4][4]={{1,2,4,6},{9,1,8,6},{3,2,1,5},{5,6,7,8}};
   Fifo *file;
 
 
  /* ranger les element du tableau dans un vecteur */
  tri=Malloc(size_I,double);assert(tri!=NULL);
  file=fifo_empty(); /*initialisation de la file */
 
 
   /* trier les éléments du vecteur par ordre croissant puis enlever les doublons */
   quicksort(tri,0,size_I-1);
   size_tri=suprime_doublon(tri,size_tab); /* tri est sans doublons */
 
 
   /* Parcour et recherche dans le tableau */
    for(k=0;k<size_tri;++k){ 
 
    	for(i=0;i<nrow;++i){
    	for(j=0;j<ncol;++j){   	
    	if(tab[i][j]==tri[k]){
 
 
    	   p[0]=i;p[1]=j; /* coordonnee du pixel courant */ 	  
   	   p_temp=Malloc(2,int);
      	   p_temp[0]=p[0]; p_temp[1]=p[1];
 	   fifo_add(&file,p_temp);
 
 	   }}}
   }   	 		
  return(1);	 
 }