Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- { Visit: http://g-lts.info/ for more code! }
- #include <stdio.h>
- #define MAX_VALUE 10
- void insertion_sort ( int arr[] );
- /* Ταξινόμηση με την μέθοδο της εισαγωγή ( Insertion Sort ) κατά αύξουσα σειρά. */
- int main ( void )
- {
- int pinakas [] = {15, 52, -5, 430, 3, 5, 44, 89, 9, 5};
- /* Ταξινομημένο : -5 3 5 5 9 15 44 52 89 430 */
- int i;
- /* ===- Εμφάνιση στοιχείων του αταξινόμητου πίνακα. -=== */
- for ( i=0; i<MAX_VALUE; i++ )
- printf("%d ", pinakas[i]) ;
- /* ===================================================== */
- insertion_sort ( pinakas );
- /* ===- Εμφάνιση στοιχείων του πλέον ταξινομημένου πίνακα. -=== */
- printf("\n");
- for ( i=0; i<MAX_VALUE; i++ )
- printf("%d ", pinakas[i]) ;
- printf("\n");
- /* =========================================================== */
- return 0;
- }
- /*==========================================================================================*/
- /* =================================- Insertion Sort -======================================*/
- /*==========================================================================================*/
- void insertion_sort ( int arr[] )
- {
- int i;
- for (i = 1; i < MAX_VALUE; i++) /* Από την -ΔΕΎΤΕΡΗ- ΘΈΣΗ του πίνακα.. έως .. το τέλος. */
- {
- int key = arr[i]; /* Αποθηκεύουμε εδώ προσωρινά το τρέχων εξεταζόμενο στοιχείο που ελέγχεται. */
- int j = i - 1; /* Το j είναι ο δείκτης που βλέπει ΠΆΝΤΑ μία θέση ΠΡΙΝ το i και θα πηγαίνει -προς τα πίσω- ΜΌΝΟ.
- Θα βλέπει δηλαδή "αριστερά" του πίνακα. Ο υποπίνακας που βλέπει ο j είναι ο "ταξινομημένος προς το παρών υποπίνακας". */
- while ( (j >= 0) && (key < arr[j]) ) /* Όσο ΔΕΝ έχουμε φτάσει στη πρώτη θέση του πίνακα
- && ΌΣΟ το νέο ΝΕΟ στοιχείο που ελέγχεται ( από τον "ΜΗ ταξινομημένο ΥΠΟπίνακα" -που βρίσκεται στα δεξιά- ) είναι ΜΙΚΡΌΤΕΡΟ από το στοιχείο που δείχνει ο δείκτης j που "βλέπει" στον "ταξινομημένο ΥΠΟπίνακα" */
- {
- arr[j + 1] = arr[j]; /* Το περιεχόμενο πάει μια θέση ΔΕΞΙΆ (μπροστά) επειδή θέλουμε αύξουσα ταξινόμηση. */
- j--; /* Πάμε άλλη μια θέση πίσω. */
- /* Γενικά μετατοπίζονται όσα είναι μικρότερα του -key- μία θέση εμπρός ( η μοναδική τιμή που χάνετε είναι αυτή της θέσης που ΠΉΡΑΜΕ το key ) αλλά και για αυτό ακριβώς τον λόγο δε μας νοιάζει. ;) */
- }
- arr[j + 1] = key; /* Αν το στοιχείο πλέον που βρίσκεται στην θέση j ΔΕΝ είναι μικρότερο του key, τότε οκ πάμε μια θέση εμπρός και εκχωρούμε το key. */
- }
- }
- { Visit: http://g-lts.info/ for more code! }
Advertisement
Add Comment
Please, Sign In to add comment