Newsgroup: it.comp.lang.c++
Titolo: Come faccio per ordinare i vaori di un Array?

Salve a tutti...
Vorrei sapere come posso fare per ordinare i valori
contenuti in un array di n elementi....!!!
Tipo
---------
int arr[10];
 i valori contenuti nell'array sono:
12,45,21,11,6,78,43,ecc..
come li faccio a mettere in ordine di grandezza nell'array?
--------
Ringrazio Anticipatamente per le risposte...!!GRazie..
by Marlbory
-----------

 come li faccio a mettere in ordine di grandezza nell'array?
BubbleSort, per cosi pochi elementi.
-- 
Luc.

 ha scritto nel messaggio
news:MPG.18b5cb24b...@tornado.fastwebnet.it...


 come li faccio a mettere in ordine di grandezza nell'array?
Con cosi' pochi elementi qualsiasi metodo va piu' o meno
bene (a meno che tu non debba ordinare un miliardo di volte
un array di 10 elementi).
Cerca in rete il bubblesort (che poi ti puoi implementare da solo in
poche righe di codice)
oppure guarda l'help della funzione standard qsort del C che
va anche meglio in genere (e non te la devi implentare tu)
perche' e' gia' pronta.
ciao,
g.

 Grazie...
algoritmo:
- esegui n-1 passi
- ad ogni passo, prendi la parte non ordinata dell'array, e sposta nella sua
1a posizione il più piccolo elemento di quella parte (scambiando con il
valore corrente)
- ripeti, riducendo di una posizione la parte non
ordinata
<CODE>
int trovaMin (int b[], int k, int m);  //non incollo le def. di queste 2
funzioni,
void scambia (int &x, int &y);       //se ti serve chiedi pure :-)
void bubblesort (int a[], int n)
   {
   int min;
   for (int i=0; i<(n-1); i++)
      {
      min=trovaMin (a, i, n);
      scambia(a[i], a[min]);
      }
   }
</CODE>
Ciao, sav.
--
sav(at)
despammed.com

 come li faccio a mettere in ordine di grandezza nell'array?
//C++
std::vector<int> v;
.....
std::sort(v.begin(),v.end());
// vedi std::stable_sort std::partial_sort
/*C*/
int compare (const void * a, const void * b){  return ( *(int*)a -
*(int*)b ); }
int main (void)
{
    int values[] = { 40, 10, 100, 90, 20, 25 };
    int n;
    qsort (values, 6, sizeof(int), compare);
    for (n=0; n<6; n++)
        printf ("%d ",values[n]);
    return 0;
}
ciao sbirish.

 come li faccio a mettere in ordine di grandezza nell'array?
Cosě:
Innanzitutto includi l'header standard algorithm:
    #include <algorithm>
Poi chiami la funzione sort:
    std::sort(arr,arr+10);
La funzione sort vuole come primo parametro un puntatore (o iteratore) al
primo elemento, e come secondo parametro un puntatore (o iteratore) un
elemento dopo l'ultimo effettivo (ecco perché per il tuo array di 10
elementi il secondo parametro č arr+10).
Ricorda che
    arr == &arr[0]
    arr+10 == &arr[10] == 1+&arr[9]

 wrote in message
news:b2gj30$1tl$1...@serv1.iunet.it...

correggimi dove sbaglio..
chi ha detto che un RandomAccessIterator sia intercambiabile con un pointer?
uno sbirish un pň boh.


Il pointer ha tutte le proprietà dei random access iterator, quindi lo è.
Inoltre è anche un bidirectional iterator, forward iterator, trivial
iterator, eccetera.
Del resto la definizione di random access iterator è stata proprio modellata
sui puntatori classici.
Per finire, se dai uno sguardo allo standard, vedrai che fra i modelli di
random access iterator c'è anche il T*
Ciao,
Raffaele

 come li faccio a mettere in ordine di grandezza nell'array?
Applicando uno dei svariati algoritmi di ordinamento, quali
Quicksort, Bubblesort, etc. etc.
Meno pigrizia ed un saggio uso di Google ti avrebbe fornito
la risposta! :-)

 Raffaele
Ti rubo un altro minuto.. cosa intendi per trivial iterator? non ne trovo
traccia nello standard..
<cite from="ISO-IEC-14882-1998">
This International Standard defines five categories of iterators, according
to the operations
defined on them: input iterators, output iterators, forward iterators,
bidirectional iterators and random
access iterators [...]
</cite>
grazie,
    sbirish

 </cite>
ho trovato questo nella reference sgi..
<cite from="
http://www.sgi.com/tech/stl/trivial.html
">
 Description
 A Trivial Iterator is an object that may be dereferenced to refer to
 some other object. Arithmetic operations (such as increment and
 comparison) are not guaranteed to be supported.
</cite>
<cite from="
http://www.sgi.com/tech/stl/Iterators.html
">
 Iterators are in fact not a single concept, but six concepts that form a
hierarchy:
 some of them define only a very restricted set of operations, while others
define
 additional functionality. The five concepts that are actually used by
algorithms
 are Input Iterator, Output Iterator, Forward Iterator, Bidirectional
Iterator, and
 Random Access Iterator. A sixth concept, Trivial Iterator, is introduced
only to
 clarify the definitions of the other iterator concepts [...]
</cite>
ridefinisco la domanda quindi..
il concetto di trivial iterator fa parte dello standard o
solo delle implementazioni?
sbirish

 // vedi std::stable_sort std::partial_sort
non è necessario ricorrere a vector!
#include <iostream>
#include <algorithm>
using namespace std;
int main(int argc, char* argv[])
{
        int v[] = { 12,45,21,11,6,78,43,15 };
        cout << "prima del sort..." << endl;
        copy(&v[0],&v[8],ostream_iterator<int,char>(cout," "));
        cout << "dopo il sort..." << endl;
        sort(&v[0],&v[8]);
        copy(&v[0],&v[8],ostream_iterator<int,char>(cout," "));
        return 0;
}

non è necessario ricorrere a vector!
non è necessario neanche usare std::sort.
perché non farlo però?
sbirish

 perché non farlo però?
penso volesse dire che si possono usare le std::*sort anche su array 
C-style

 C-style
Chi vuole intendere...
Forse non ha nemmeno guardato il mio listato...

Forse non ha nemmeno guardato il mio listato...
l'ho guardato enrico..
ed è una discussione che è già stata fatta in questo stesso thread..
ciao
 sbirish

 avevo capito.. ma perché dovrei usare un array?
Se il programma lo fai tu usi quello che vuoi, cosdev aveva chiesto come
ordinare un array ( int arr[10];)
La risposta corretta prevedeva il sort dell'array, il consiglio peraltro
raccomandabile in molti casi d'utilizzare un vector non era tuttavia la
risposta più corretta alla sua domanda, a mio avviso.
Circa l'opportunità di usare un array o un vector, io uso il primo quando
sono certo del numero di valori da memorizzare.
E' importante comunque che cosdev sappia che sort è applicabile sia agli
array che ai vector, poi ciascuno usi le strutture preferite tenendone a
mente pregi e difetti.
ciao.