- Codice:
void insertionSort(int arr[], int l)
{
int i = 0;
for(i; i<l && arr[0]<l; i++)
for(int j = 0; j<l-1;j++)
if (arr[j] > arr[j + 1])
{
swap(arr[j], arr[j + 1]);
}
}
void insertionSort(int arr[], int l)
{
int i = 0;
for(i; i<l && arr[0]<l; i++)
for(int j = 0; j<l-1;j++)
if (arr[j] > arr[j + 1])
{
swap(arr[j], arr[j + 1]);
}
}
Con quell'array non viene ordinato, anche cambiando l'ordine delle cifre.
Super Squirrel ha scritto:... c'è qualcosa che non va tra le condizioni del primo for ...
Super Squirrel ha scritto:Premesso che i miei studi sull'argomento si limitano ad una lettura su wikipedia appena fatta, quello mi sembra più un bubble sort mal congegnato che un insertion sort...
Sono riuscito a risolvere, implementandolo diversamente, e funziona anche con l'array che mi hai proposto tu.
Grazie comunque per l'aiuto.
void insertionSort(int arr[], int lunghezza)
{
for (int i = 0; i < lunghezza - 1; i++)
for (int j = i + 1; j > 0; j--)
if (arr[j] < arr[j - 1])
{
int tmp = arr[j];
arr[j] = arr[j - 1];
arr[j - 1] = tmp;
}
}
Non volevo dribblare proprio nulla, è che riflettendoci di più ho trovato una soluzione diversa ed efficiente. Te la mostro: ...
void insertion_sort(int *v, const unsigned int dim)
{
for(unsigned int i = 1; i < dim; ++i)
{
for(unsigned int j = i; j > 0 && v[j] < v[j - 1]; --j)
{
swap(v[j], v[j - 1]);
}
}
}
@Super Squirrel
Benvenuto nel club!
Visitano il forum: Nessuno e 1 ospite