Penso che tutti in questa sezione conosciate il bubble sort, con ciò voglio affrontare un problema che mi assilla, voglio levarmelo dalla testa.
In c per quello che so un vettore completo è chiamato automaticamente per riferimento, ma i singoli elementi di esso vengono passati per valore.
CODICE
In background ciè nel riordinare i singoli vettori cosa accade? qual'è la differenza tra il classico riordinamento per valori?
I valori del vettore non viene più copiato? ma grazie ai puntatori viene riordinato direttamente?
In c per quello che so un vettore completo è chiamato automaticamente per riferimento, ma i singoli elementi di esso vengono passati per valore.
CODICE
Codice:
#include <stdio.h>
#define SIZE 10
void bubbleSort(int * const array, const int size);
int main(){
int a[SIZE] = {2,4,6,2,5,6,7,49,1};
int i; // contatore
printf("Ordine originale");
for (int j = 0; j < SIZE; ++j) {
printf("%d\n", a[j]);
}
bubbleSort(a, SIZE);
printf("riordinati");
for (int j = 0; j < SIZE; ++j) {
printf("%d\n", a[j]);
}
return 0;
}
void bubbleSort(int * const array, const int size){
void swap(int *element1Ptr, int *element2Ptr); // prototipo
int pass; // contatore dei passaggi;
int j; //contatore dei confronti
//Ciclo per controllare i confronti
for(pass = 1; pass < size; pass++){
//ciclo per controllare i confronti per ogni passaggio
for(j = 0; j < size; j++){
if(array[j] > array[j+1]){
swap(&array[j], &array[j+1]);
}
}
}
}
void swap(int *element1Ptr, int *element2Ptr){
int hold = *element1Ptr;
*element1Ptr = *element2Ptr;
*element2Ptr = hold;
}
In background ciè nel riordinare i singoli vettori cosa accade? qual'è la differenza tra il classico riordinamento per valori?
I valori del vettore non viene più copiato? ma grazie ai puntatori viene riordinato direttamente?