|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Dec 2008
Città: italia
Messaggi: 80
|
[c]ordinamento crescente righe matrice
come posso fare ad ordinare le righe di una matrice m[i][j] con una procedura tipo merge-sort nel modo più semplice possibile in c?
|
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Nov 2013
Città: Nel cuore dell'8 Mile di Detroit
Messaggi: 3759
|
Codice:
#include <stdlib.h> #include <stdio.h> #define MAX 300 /* * Legge in input il numero n ed n numeri interi * che memorizza nell'array. Restituisce il numero * di elementi letti (n). */ int leggi_array(int V[]) { int n, i; printf("Numero di elementi: "); scanf("%d", &n); for (i=0; i<n; i++) scanf("%d", &V[i]); return(n); } /* * Stampa in output l'array. */ void stampa_array(int V[], int n) { int i; for (i=0; i<n; i++) { printf("%d ", V[i]); } printf("\n"); return; } /* * Funzione Merge per la fusione di due * componenti ordinate dell'array. */ void Merge(int A[], int p, int q, int r) { int i, j, k, B[MAX]; i = p; j = q+1; k = 0; while (i<=q && j<=r) { if (A[i]<A[j]) { B[k] = A[i]; i++; } else { B[k] = A[j]; j++; } k++; } while (i<=q) { B[k] = A[i]; i++; k++; } while (j<=r) { B[k] = A[j]; j++; k++; } for (k=p; k<=r; k++) A[k] = B[k-p]; return; } /* * Funzione ricorsiva MergeSort. */ void MergeSort(int A[], int p, int r) { int q; if (p<r) { q = (p+r)/2; MergeSort(A, p, q); MergeSort(A, q+1, r); Merge(A, p, q, r); } return; } /* * Funzione principale */ int main(void) { int n, V[MAX]; n = leggi_array(V); MergeSort(V, 0, n-1); stampa_array(V, n); return(1); } |
![]() |
![]() |
![]() |
#3 |
Member
Iscritto dal: Dec 2008
Città: italia
Messaggi: 80
|
questo è l'algoritmo merge sort, però come si modifica in modo da utilizzarlo su una matrice bidimensionale m[i][j] in modo da ordinare gli elementi delle righe della matrice in ordine crescente??
|
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Nov 2013
Città: Nel cuore dell'8 Mile di Detroit
Messaggi: 3759
|
tu vorresti proprio l'insalata anche condita pure ?
![]() non si possono fare gli esercizi per intero: devi fare un piccolo sforzo (veramente assai piccolo in questo caso) |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 07:52.