13/11/13 14:29
tuttodiMC
Salve a tutti ho pensato di crearmi un algoritmo di ordinamento che ho chiamato Higher Sort. Premetto che è uscito dalla mia testa e se quindi lo trovate scritto da qualche altra parte sappiate che non l'ho copiato.
Ho però un problema con questo. Intanto ecco il codice c#:
Come si può notare è una variante del Bubble Sort, ma lo è perché se non ci fosse l'ultimo ciclo for, una coppia dell' array sarebbe disordinata. Io voglio rimuovere questo ostacolo, ma non ho intenzione di diffondere questo algoritmo. Data la seguente matrice: { 23, 53, 1, 7, 32, 96, 0, 2, 4, 6, 3 };
il risultato senza il ciclo for è:
0
1
2
4
3
6
7
23
32
53
96
mentre con l'ultimo ciclo il 4 ed il 3 sono invertiti e quindi si trovano nelle giuste posizioni. Come mai? Da dove può derivare il problema?
Ho però un problema con questo. Intanto ecco il codice c#:
public static int[] HigherSort(ref int[] matrice) { int[] m = matrice; int ordinati = 1; while (ordinati <= m.Length - 1) { int max = 0, maxPos = 0; for (int i = 0; i < m.Length - ordinati; i++) { if (m[i] > max) { maxPos = i; max = m[i]; } } int tmp = m[m.Length - ordinati]; m[m.Length - ordinati++] = m[maxPos]; m[maxPos] = tmp; for (int i = 0; i < m.Length - 1; i++) { if (m[i] > m[i + 1]) { tmp = m[i]; m[i] = m[i + 1]; m[i + 1] = tmp; } } } return m; }
Come si può notare è una variante del Bubble Sort, ma lo è perché se non ci fosse l'ultimo ciclo for, una coppia dell' array sarebbe disordinata. Io voglio rimuovere questo ostacolo, ma non ho intenzione di diffondere questo algoritmo. Data la seguente matrice: { 23, 53, 1, 7, 32, 96, 0, 2, 4, 6, 3 };
il risultato senza il ciclo for è:
0
1
2
4
3
6
7
23
32
53
96
mentre con l'ultimo ciclo il 4 ed il 3 sono invertiti e quindi si trovano nelle giuste posizioni. Come mai? Da dove può derivare il problema?
aaa