PDA

Visualizza la versione completa : [C] Ordinare in maniera crescente una matrice


simone_90
23-10-2007, 15:46
[C]Ordinare in maniera crescente una matrice 4*3
di numeri interi
iniziallizata nella definizone con ° disordinati

int matrice[3[4]=[9,8,4,5][7,6,10][1,3,2]
helppppp

pallinopinco
23-10-2007, 16:11
È un compito "per casa"? :dottò:

Per avere un helppppp devi mostrare un minimo di buona volontà cercando di buttare giù un po' di codice...

Alla matrice manca un elemento.

simone_90
23-10-2007, 16:57
mha a noi il prof
ha dettetato ripeto [3][4]=[9,8,4,5][7,6,10][1,3,2]
io in c nn son capace abbiamo appena iniziato
io ho pensato pensato
per ogni matrice partidal primo elemento di essa e controllalo col 2°..
finchè primo elemento<secondo<terzo<quarto

poi cotrolla primo elemntro pirma matricce cn primo elemento 2 matrice e così via..
nn credo sia giusto...
:(

Vincenzo1968
23-10-2007, 17:46
Ciao Simone,

eccoti un esempio:



#include <stdio.h>
#include <malloc.h>

#define RIGHE 3
#define COLONNE 4

void BubbleSort(int *Mat, int nConta)
{
register int a, b;
register int t;

for ( a = 1; a < nConta; ++a )
{
for ( b = nConta - 1; b >= a; --b )
{
if ( Mat[b-1] > Mat[b] )
{
t = Mat[b-1];
Mat[b-1] = Mat[b];
Mat[b] = t;
}
}
}

}

int main(int argc, char* argv[])
{
int nTot = RIGHE * COLONNE;
int r, c;

int matrice[RIGHE][COLONNE] = {{9,8,4,5} ,{7,6,10,1}, {3,2,7,8}};

printf("matrice non ordinata:\n");
for (r = 0; r < RIGHE; r++ )
for (c = 0; c < COLONNE; c++)
printf("%d ", matrice[r][c]);
printf("\n\n");

BubbleSort((int*)matrice, nTot);

printf("matrice ordinata:\n");
for (r = 0; r < RIGHE; r++ )
for (c = 0; c < COLONNE; c++)
printf("%d ", matrice[r][c]);
printf("\n\n");

return 0;
}


Per ordinare la matrice utilizziamo l'algoritmo 'Bubble Sort' che, nel caso in cui i dati da ordinare siano pochi, è più efficiente perfino del QuickSort.
Praticamente si procede per confronti successivi. Se l'elemento precedente è maggiore del successivo, i due elementi vengono scambiati:



if ( Mat[b-1] > Mat[b] )
{
t = Mat[b-1];
Mat[b-1] = Mat[b];
Mat[b] = t;
}


Alla fine, l'array risulta ordinato.

Loading