JosefK
Πολύ δραστήριο μέλος
Ο Μιχαήλ αυτή τη στιγμή δεν είναι συνδεδεμένος. Επαγγέλεται Tatoo artist. Έχει γράψει 1,361 μηνύματα.
22-11-10
19:21
Να κάνω και μία διευκρίνηση!
Όταν έγραψα " Εντελώς βλακεία άσκηση, ούτε καν για εκπαιδευτικούς λόγους δεν αξίζει."
δεν εννοούσα ότι πρόκειται για πανεύκολη άσκηση για κάποιον αρχάριο, εννούσα ότι αυτός ο τρόπος εύρεσης μεγίστου είναι "κακός", ταλαιπωρία για το τίποτα. Γίνεται πολύ πιο απλά και πιο γρήγορα. Καλό είναι οι ασκήσεις που μπαίνουν για εκπαιδευτικούς λόγους να έχουν και κάποια πρακτική αξία και λογική.
Όταν έγραψα " Εντελώς βλακεία άσκηση, ούτε καν για εκπαιδευτικούς λόγους δεν αξίζει."
δεν εννοούσα ότι πρόκειται για πανεύκολη άσκηση για κάποιον αρχάριο, εννούσα ότι αυτός ο τρόπος εύρεσης μεγίστου είναι "κακός", ταλαιπωρία για το τίποτα. Γίνεται πολύ πιο απλά και πιο γρήγορα. Καλό είναι οι ασκήσεις που μπαίνουν για εκπαιδευτικούς λόγους να έχουν και κάποια πρακτική αξία και λογική.
Σημείωση: Το μήνυμα αυτό γράφτηκε 13 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
JosefK
Πολύ δραστήριο μέλος
Ο Μιχαήλ αυτή τη στιγμή δεν είναι συνδεδεμένος. Επαγγέλεται Tatoo artist. Έχει γράψει 1,361 μηνύματα.
22-11-10
18:22
Η κυριότερη λύση είναι να σπασεις τον πίνακα στα 2 να κανεις αναζητηση μεγίστου σε κάθε έναν και έπειτα να συγκρίνεις τα 2 μέγιστα.. Αν θες αυτό είναι 5 min υπόθεση.. Το διαίρει και βασίλευε χρησιμοποιείται σε ταξινομήσεις πινάκων όπου δεν βρίσκει απλά μέγιστο αλλά ταξινομεί έναν πίνακα βλέπε Quick Sort, Merge Sort κτλ.. Για ποιο λόγο να κάνεις ταξινόμηση με διαίρει και βασίλευε απο τι στιγμή που θές απλά μέγιστο.. Πραγματικά Αν μπορείς δώσε την εκφώνηση δεν καταλαβαίνω πραγματικά τι ζητάς....
Μάλλον εννοεί μια αναδρομική συνάρτηση που σπάει τον πίνακα στη μέση και καλείται αναδρομικά, και όταν καλεστεί με πίνακα 2 στοιχεία τότε επιστρέφει το μέγιστο μεταξύ αυτών των 2, ή αν καλεστεί με πίνακα ενός στοιχείου επιστρέφει το στοιχείο αυτό.
Εντελώς βλακεία άσκηση, ούτε καν για εκπαιδευτικούς λόγους δεν αξίζει.
Code:
#include <stdio.h>
int maximum(int array[],int n)
{
int x,y;
if (n==1) return array[0];
else if (n==2)
{
if (array[0]> array[1]) return array[0];
else return array[1];
}
else
{
x=maximum(array,n/2);
y=maximum(array+n/2,n-n/2);
if (x>y) return x;
else return y;
}
}
int main()
{
int array[] = {3,0,1212,1,7,23,10,352175,27,12};
printf ("%d\n",maximum(array,10));
return 0;
}
Σημείωση: Το μήνυμα αυτό γράφτηκε 13 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.