Social Buttons

Αλγόριθμος Επιλογής

Έστω ότι  θέλουμε να ταξινομήσουμε ένα πίνακα με αύξουσα σειρά :

1ο βήμα : 

Βρίσκουμε την μικρότερη τιμή του πίνακα και την ανταλλάσσουμε με την πρώτη τιμή του πίνακα. Για να έχουμε την μικρότερη τιμή του πίνακα στην 1η θέση.

2ο βήμα

Βρίσκουμε  πάλι το μικρότερο στοιχείο του πίνακα χωρίς να συμπεριλάβουμε το πρώτο στοιχείο του πίνακα καθώς είναι ήδη το μικρότερο στοιχείο του πίνακα.
Ακολουθούμε την ίδια τακτική με τα υπόλοιπα στοιχεία  του πίνακα μέχρι να γίνει και η τελευταία σύγκριση του πίνακα δηλαδή η σύγκριση των δύο τελευταίων στοιχείων του πίνακα .
Έτσι , ταξινομήσαμε τον πίνακα σε αύξουσα σειρά.


Έστω ότι  θέλουμε να ταξινομήσουμε ένα πίνακα με φθίνουσα σειρά :

1ο βήμα :

Βρίσκουμε την μεγαλύτερη τιμή του πίνακα και την ανταλλάσσουμε με την πρώτη τιμή του πίνακα. Για να έχουμε την μεγαλύτερη τιμή του πίνακα στην 1η θέση.

2ο βήμα : 

Βρίσκουμε  πάλι το μεγαλύτερο στοιχείο του πίνακα χωρίς να συμπεριλάβουμε το πρώτο στοιχείο του πίνακα καθώς είναι ήδη το μεγαλύτερο στοιχείο του πίνακα.
Ακολουθούμε την ίδια τακτική με τα υπόλοιπα στοιχεία  του πίνακα μέχρι να γίνει και η τελευταία σύγκριση του πίνακα δηλαδή η σύγκριση των δύο τελευταίων στοιχείων του πίνακα .

Έτσι , ταξινομήσαμε τον πίνακα σε φθίνουσα σειρά.

Παράδειγμα :

















Παράδειγμα 2 :


Να γραφτεί πρόγραμμα το οποίο να διαβάζει 10 πραγματικούς αριθμούς και να τους αποθηκεύει σε ένα πίνακα , να καλεί  συνάρτηση που να δέχεται σαν παραμέτρους τον πίνακα και να τον ταξινομεί με τον αλγόριθμο επιλογής.

Λύση :


 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
41
42
43
#include<stdio.h>
#include<stdlib.h>

void alg_epilogis (double arr[],int length);

int main (void)
{
	int i;
	double pinakas[10];

	for(i=0;i<10;i++)
	{
		printf("Dose ari8mo\n");
		scanf("%f",&pinakas[i]);
	}
	alg_epilogis(pinakas,10);
	printf("Parakato 9a tipo9ei o pinakas taxinomimenos me auxousa seira \n ");
	for(i=0;i<10;i++)
	{
		printf("%f\n",pinakas[i]);
	}
	return 0;
}

void alg_epilogis (double arr[],int length)
{
	int i,j;
	double temp;
	
	for(i=0;i<length;i++)
	{
		for(j=i+1;j<length;j++)
		{
			if( pinakas[i]>pinakas[j] )
			{
				temp=pi[i];
				pinakas[i]=pinakas[j];
				pinakas[j]=temp;
			}//telosif

		}//telosforj
	}//telosfor
}

Copyright © 2015 Sofronas Konstantinos - Sotirios. All Rights Reserved. Designed By Sofronas