Ταξινομούμε το πίνακα ως εξής :
Στο τρέχων στοιχείο του
πίνακα , ελέγχεται αν είναι μεγαλύτερο από
τον ήδη ταξινομημένο πίνακα , διατρέχοντας τον πίνακα
από τα δεξιά προς τα αριστερά.
- Αν είναι μεγαλύτερο από το δεξιότερο στοιχείο τότε παραμένει στην θέση του και συνεχίζονται οι συγκρίσεις .
- Αν είναι μικρότερο τότε το μετακινούμε μία θέση δεξιά , στη συνέχεια ελέγχουμε το επόμενο κατά αριστερά του ταξινομημένου τμήματος.
- Αν είναι το τρέχον στοιχείο μεγαλύτερο τότε το πάμε στην παλαιά του θέση.
- Αν είναι μικρότερο τότε επαναλαμβάνουμε τη διαδικασία.
Παράδειγμα :
Παράδειγμα 2 :
Να γραφτεί πρόγραμμα το οποίο θα διαβάζει 5 ακέραιους και να
τους αποθηκεύει σε ένα πίνακα να καλεί μία συνάρτηση , η οποία να δέχεται σαν
είσοδο τον πίνακα ακεραίων και να τυπώνει τον ταξινομημένο πίνακα σε αύξουσα
σειρά .
Λύση :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | #include<stdio.h> #include<stdlib.h> void alg_eisagogis (int arr[], int length); int main (void) { int i , pinakas[5]; for(i=0;i<5;i++) { printf("Dose ari8mo\n"); scanf("%d",&pinakas[i]); } alg_eisagogis(pinakas,5); printf("Parakato 9a tipo9ei o pinakas taxinomimenos me auxousa seira \n "); for(i=0;i<5;i++) { printf("%f\n",pinakas[i]); } return 0; } void alg_eisagogis ( int arr[] , int length) { int i , j ,temp; for( i=1 ; i<length ; i++) { temp=arr[i]; j=i; while((j>0)&&(arr[j-i])) { arr[ j ]= arr[ j-1 ];//to stoixeio pigenei pros ta dexia j--;//j=j-1; } arr[j]=temp; } } |