Sort di un array bidimensionale

BuonGiorno

Ci sto' impazzendo, ma oggi non ho la mente lucida, infatti non riesco a fare un Sort di un Array a due dimensioni

int valore[10][2] = {
  {1, 0  },
  {1500, 1},
  {3000, 2},
  {10,   3},
  {2500, 4},
  {2000, 5},
  {3500, 6},
  {4000, 7},
  {500,  8},
  {250,  9}
};

Il Sort riesco a farlo, solo che non riesco a portarmi dietro anche il secondo valore

dovrebbe venire cosi;
4000 7
3500 6
3000 2
2500 4 etc etc

e invece il secondo parametro riesco solo a mtterlo in ordine crescente

Sarà che oggi sei perseguitato dalla mala...sort..e.

Ma come lo fai questo ordinamento?
Cosa ti impedisce di ordinare sul primo e quando lo sposti portarti dietro anche il secondo?

Bella domanda.
Il sort sul primo non ' un problema, è che non riesco a portarmi dietro il secondo

void Sort()  {
  int i, j, app;
  for (i = 0; i < 10 ; i++)
  {
    app = valore[i][0];
    for (j = i - 1; (j >= 0) && (valore[j][0] < app); j--)
      valore[j + 1][0] = valore[j][0];
    valore [j + 1][0] = app;
  }
}

Mi pare devi non solo salvarti in app il valore ma anche salvarti l'indice oppure salvare anche altro elemento
Sicuramente nel for interno non puoi scambiare di posto solo gli elementi [ 0 ] ma anche gli elemento [ 1 ]

for (i = 0; i < 10 ; i++)
 {
   app1 = valore[i][0];
   app2 = valore[i][1];
   for (j = i - 1; j >= 0 && valore[j][0] < app1; j--)
   { valore[j + 1][0] = valore[j][0];
     valore[j + 1][1] = valore[j][1];
   }
   valore [j + 1][0] = app1;
   valore [j + 1][1] = app2;
 }

Oltretutto assegnavi a valore[j+1][0] prima valore[j][0] e subito dopo app...

Grazie ragazzi,
@nid69 I like you :wink:

Prego, di nulla. :slight_smile:
Hai preso il codice da qui ? Ordinamento (programmazione in C) - Wikiversità
Belle le animazioni.
A me viene più naturale il selection sort o il bubble sort (senza ricorsione)

Yes