Το Excel έχει μια συνάρτηση για τον προσδιορισμό της ελάχιστης τιμής. Ωστόσο, η εύρεση της ελάχιστης τιμής ανά συνθήκη είναι προβληματική. Μια λειτουργία από το πρόσθετο μπορεί να αντιμετωπίσει αυτήν την εργασία. =ΜΙΝΤΣΣΛΙ

(παρόμοιο με το τυπικό Λειτουργίες Excel SUMIF).

Σε έκδοση Excel 2016 και από πάνω υπάρχει ενσωματωμένη λειτουργία ΜΙΝΕΣΛΙμπορείτε να το χρησιμοποιήσετε. Εάν το Excel είναι παλαιότερη έκδοση, τότε αυτή η συνάρτηση μπορεί να χρησιμοποιηθεί εγκαθιστώντας το πρόσθετο VBA-Excel.

Η συνάρτηση έχει τα ακόλουθα ορίσματα =MINESLI( RANGE;ΚΡΙΤΗΡΙΑ;[SEARCH_RANGE])

    ΕΥΡΟΣ- Εύρος ελεγμένων κελιών.

  • ΚΡΙΤΗΡΙΟ- Μια συνθήκη σε μορφή αριθμού, έκφρασης ή κειμένου που καθορίζει τον έλεγχο ελάχιστης τιμής.
  • [ SEARCH_RANGE ]- Πραγματικό εύρος για τον προσδιορισμό της ελάχιστης τιμής. Εάν αυτή η παράμετρος δεν έχει καθοριστεί, θα χρησιμοποιηθούν τα κελιά που καθορίζονται από την παράμετρο. ΕΥΡΟΣ.

Παράδειγμα 1

Ως κριτήριο, μπορείτε να καθορίσετε τιμές και λογικές εκφράσεις:

  1. Εξετάστε το ακόλουθο παράδειγμα, το οποίο καθορίζει την ελάχιστη βαθμολογία στη βιβλιογραφία. Για αυτό, στην παράμετρο ΚΡΙΤΗΡΙΟκαθορίζεται η τιμή "Literature" και η παράμετρος ΕΥΡΟΣ- λίστα ειδών.
  2. Εάν καθορίσετε μια λογική έκφραση ως κριτήριο «<>Ρωσική", τότε ο ελάχιστος βαθμός θα καθοριστεί σε όλα τα μαθήματα εκτός από τη ρωσική γλώσσα.

Παράδειγμα 2

Στο παρακάτω παράδειγμα, η παράμετρος SEARCH_RANGEδεν έχει οριστεί, επομένως η ελάχιστη τιμή προσδιορίζεται μεταξύ των κελιών που καθορίζονται στην παράμετρο ΕΥΡΟΣ.

Εάν πρέπει να εργαστείτε με μεγάλους πίνακες, σίγουρα θα βρείτε διπλά ποσά διάσπαρτα σε ολόκληρη τη στήλη. Ταυτόχρονα, ίσως χρειαστεί να επιλέξετε δεδομένα από τον πίνακα με την πρώτη μικρότερη αριθμητική τιμή που έχει τα δικά της διπλότυπα. Χρειαζόμαστε αυτόματη επιλογή δεδομένων ανά συνθήκη. Στο Excel, μπορείτε να χρησιμοποιήσετε με επιτυχία έναν τύπο πίνακα για αυτόν τον σκοπό.

Πώς να κάνετε μια επιλογή στο Excel κατά συνθήκη

Για να προσδιορίσετε την αντίστοιχη τιμή για τον πρώτο μικρότερο αριθμό, απαιτείται μια επιλογή από τον πίνακα κατά συνθήκη. Ας υποθέσουμε ότι θέλουμε να μάθουμε το πρώτο περισσότερο φθηνά αγαθάστην αγορά από αυτόν τον τιμοκατάλογο:

Η αυτόματη δειγματοληψία υλοποιείται με έναν τύπο που θα έχει την ακόλουθη δομή:

INDEX(περιοχή_δεδομένων_για_επιλογή, MIN(IF(εύρος=MIN(εύρος),ROW(εύρος)-ROW(κεφαλίδα_στήλης),"")))

Στη θέση "περιοχή_δεδομένων_για_επιλογή" θα πρέπει να καθορίσετε το εύρος τιμών A6:A18 για μια επιλογή από έναν πίνακα (για παράδειγμα, κείμενο), από την οποία η συνάρτηση INDEX θα επιλέξει μία τιμή που προκύπτει. Το όρισμα "εύρος" σημαίνει την περιοχή των κελιών με αριθμητικές τιμές από την οποία πρέπει να επιλεγεί ο πρώτος μικρότερος αριθμός. Στο όρισμα "column_header" για τη δεύτερη συνάρτηση ROW, πρέπει να καθορίσετε μια αναφορά κελιού με μια κεφαλίδα στήλης που περιέχει μια σειρά από αριθμητικές τιμές.

Φυσικά, αυτός ο τύπος πρέπει να εκτελείται σε πίνακα. Επομένως, για να επιβεβαιώσετε την καταχώρισή του, θα πρέπει να πατήσετε όχι μόνο το πλήκτρο Enter, αλλά ολόκληρο τον συνδυασμό πλήκτρων CTRL + SHIFT + Enter. Εάν όλα γίνονται σωστά, θα εμφανιστούν σγουρά τιράντες στη γραμμή τύπων.

Δώστε προσοχή στο παρακάτω σχήμα, όπου αυτός ο τύπος στον πίνακα εισήχθη στο κελί B3:

Επιλέγοντας την αντίστοιχη τιμή με τον πρώτο μικρότερο αριθμό:


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



Πώς λειτουργεί η επιλογή ανά συνθήκη

Η συνάρτηση INDEX παίζει βασικό ρόλο εδώ. Το ονομαστικό καθήκον του είναι να επιλέξει από τον πίνακα πηγής (που καθορίζεται στο πρώτο όρισμα - A6:A18) τιμές που αντιστοιχούν σε ορισμένους αριθμούς. Το INDEX λειτουργεί σύμφωνα με τα κριτήρια που ορίζονται στο δεύτερο (αριθμός γραμμής μέσα στον πίνακα) και στο τρίτο (αριθμός στήλης στον πίνακα) ορίσματα. Δεδομένου ότι ο πίνακας προέλευσης A6:A18 έχει μόνο 1 στήλη, δεν προσδιορίζουμε το τρίτο όρισμα στη συνάρτηση INDEX.

Διάφορες συναρτήσεις υπολογισμού χρησιμοποιούνται για τον υπολογισμό του αριθμού της γραμμής του πίνακα απέναντι από τον μικρότερο αριθμό στη διπλανή περιοχή B6:B18 και τη χρήση του ως τιμή για το δεύτερο όρισμα.

Η συνάρτηση IF σας επιτρέπει να επιλέξετε μια τιμή από μια λίστα ανά συνθήκη. Το πρώτο του όρισμα καθορίζει πού ελέγχεται κάθε κελί στην περιοχή B6:B18 για τη μικρότερη αριθμητική τιμή: IFB6:B18=MINB6:B18. Με αυτόν τον τρόπο δημιουργείται ένας πίνακας στη μνήμη του προγράμματος από booleansΣωστό και λάθος. Στην περίπτωσή μας, 3 στοιχεία πίνακα θα περιέχουν TRUE, καθώς η ελάχιστη τιμή του 8 περιέχει 2 ακόμη διπλότυπα στη στήλη B6:B18.

Το επόμενο βήμα είναι να προσδιορίσετε ποιες σειρές στην περιοχή περιέχουν κάθε ελάχιστη τιμή. Αυτό το χρειαζόμαστε λόγω του ορισμού της πρώτης μικρότερης τιμής. Αυτή η εργασία υλοποιείται χρησιμοποιώντας τη συνάρτηση LINE, γεμίζει τα στοιχεία του πίνακα στη μνήμη του προγράμματος με τους αριθμούς γραμμών του φύλλου. Αλλά πρώτα, από όλους αυτούς τους αριθμούς, ο αριθμός αφαιρείται από την πρώτη σειρά του πίνακα - B5, δηλαδή τον αριθμό 5. Αυτό γίνεται επειδή η συνάρτηση INDEX λειτουργεί με αριθμούς μέσα στον πίνακα και όχι με αριθμούς εργαζομένων Φύλλο Excel. Ταυτόχρονα, η συνάρτηση ROW μπορεί να επιστρέψει μόνο τους αριθμούς γραμμών του φύλλου. Για να μην υπάρξει μετατόπιση, είναι απαραίτητο να συγκρίνετε τη σειρά των αριθμών των σειρών του φύλλου και του πίνακα αφαιρώντας τη διαφορά. Για παράδειγμα, εάν ο πίνακας βρίσκεται στην 5η σειρά του φύλλου, τότε κάθε σειρά του πίνακα θα είναι 5 μικρότερη από την αντίστοιχη σειρά του φύλλου.

Αφού επιλεγούν όλες οι ελάχιστες τιμές και έχουν αντιστοιχιστεί όλοι οι αριθμοί σειρών του πίνακα, η συνάρτηση MIN θα επιλέξει τον μικρότερο αριθμό σειράς. Η ίδια σειρά θα περιέχει τον πρώτο μικρότερο αριθμό που εμφανίζεται στη στήλη B6:B18. Με βάση αυτόν τον αριθμό γραμμής, η συνάρτηση INDEX θα επιλέξει την κατάλληλη τιμή από τον πίνακα A6:A18. Ως αποτέλεσμα, ο τύπος επιστρέφει αυτήν την τιμή στο κελί B3 ως αποτέλεσμα του υπολογισμού.

Πώς να επιλέξετε την τιμή με τον μεγαλύτερο αριθμό στο Excel

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


Εάν πρέπει να αλλάξετε τις συνθήκες του τύπου έτσι ώστε στο Excel να μπορείτε να επιλέξετε το πρώτο μέγιστο, αλλά λιγότερο από 70:

!}

Πώς να επιλέξετε την πρώτη ελάχιστη τιμή εκτός από το μηδέν στο Excel:


Όπως μπορείτε εύκολα να δείτε, αυτοί οι τύποι διαφέρουν μόνο στις συναρτήσεις MIN και MAX και στα ορίσματά τους.

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

Το Excel έχει μια συνάρτηση για τον προσδιορισμό της ελάχιστης τιμής. Ωστόσο, η εύρεση της ελάχιστης τιμής ανά συνθήκη είναι προβληματική. Μια λειτουργία από το πρόσθετο μπορεί να αντιμετωπίσει αυτήν την εργασία. =ΜΙΝΤΣΣΛΙ(παρόμοιο με την τυπική συνάρτηση SUMIF του Excel).

Σε έκδοση Excel 2016 και από πάνω υπάρχει ενσωματωμένη λειτουργία ΜΙΝΕΣΛΙμπορείτε να το χρησιμοποιήσετε. Εάν το Excel είναι παλαιότερη έκδοση, τότε αυτή η συνάρτηση μπορεί να χρησιμοποιηθεί εγκαθιστώντας το πρόσθετο VBA-Excel.

Η συνάρτηση έχει τα ακόλουθα ορίσματα =MINESLI( RANGE;ΚΡΙΤΗΡΙΑ;[SEARCH_RANGE])

    ΕΥΡΟΣ- Εύρος ελεγμένων κελιών.

  • ΚΡΙΤΗΡΙΟ- Μια συνθήκη σε μορφή αριθμού, έκφρασης ή κειμένου που καθορίζει τον έλεγχο ελάχιστης τιμής.
  • [ SEARCH_RANGE ]- Πραγματικό εύρος για τον προσδιορισμό της ελάχιστης τιμής. Εάν αυτή η παράμετρος δεν έχει καθοριστεί, θα χρησιμοποιηθούν τα κελιά που καθορίζονται από την παράμετρο. ΕΥΡΟΣ.

Παράδειγμα 1

Ως κριτήριο, μπορείτε να καθορίσετε τιμές και λογικές εκφράσεις:

  1. Εξετάστε το ακόλουθο παράδειγμα, το οποίο καθορίζει την ελάχιστη βαθμολογία στη βιβλιογραφία. Για αυτό, στην παράμετρο ΚΡΙΤΗΡΙΟκαθορίζεται η τιμή "Literature" και η παράμετρος ΕΥΡΟΣ- λίστα ειδών.
  2. Εάν καθορίσετε μια λογική έκφραση ως κριτήριο "<>Ρωσική", τότε ο ελάχιστος βαθμός θα καθοριστεί σε όλα τα μαθήματα εκτός από τη ρωσική γλώσσα.

Παράδειγμα 2

Στο παρακάτω παράδειγμα, η παράμετρος SEARCH_RANGEδεν έχει οριστεί, επομένως η ελάχιστη τιμή προσδιορίζεται μεταξύ των κελιών που καθορίζονται στην παράμετρο ΕΥΡΟΣ.

ΕΙΔΙΚΕΣ ΠΕΡΙΠΤΩΣΕΙΣ

Σε συγκεκριμένες περιπτώσεις, η λύση μπορεί να ληφθεί με απαρίθμηση όλων των δυνατών συνδυασμών.

Πρόγραμμα (C#):

Δημόσιο στατικό int FactGen(int n) ( int fact = new int; fact = 1; for (int i = 1; i< n + 1; i++) fact[i] = i * fact; return fact; } public static int PermsGenerator(int arr, int num, int fact) { int i, j, f, newind, newnum, newval, size = arr.Length; int result = new int; Array.Copy(arr, result, size); for (i = 0, newnum = num; i < size - 1; i++) { newind = newnum / (f = fact); newnum = newnum - newind * f; newval = result; for (j = i + newind; j >Εγώ; j--) αποτέλεσμα[j] = αποτέλεσμα; αποτέλεσμα[i] = newval; ) αποτέλεσμα επιστροφής· ) public static int SumAbs(int arr) ( int sum = 0, prev = arr; foreach (int value in arr) (sum += Math.Abs(value - prev); prev = value; ) return sum; ) public static int MaxArr(int arr, bool detprn) ( int i, j, sum, smax = -1, size = arr.Length; int perm, result = new int, fact = FactGen(size), sorted = new int, empire = new int;Array.Copy(arr, sorted, size);Array.Sort(sorted);for (i = 0; i< fact; i++) { if ((sum = SumAbs(perm = PermsGenerator(sorted, i, fact))) >smax) ( smax = άθροισμα; αποτέλεσμα = perm; ) if (detprn) ( Console.Write("\nΜετάθεση: "); foreach (τιμή int σε perm) Console.Write(value + " "); Console.Write(" Άθροισμα: (0) Μέγιστο άθροισμα: (1)", άθροισμα, smax); ) ) Console.Write("\nΑρχική επιλογή: "); foreach (int value in arr) Console.Write(value + " "); Console.Write("\nΤαξινομημένη επιλογή: "); foreach (int value in sorted) Console.Write(value + " "); Console.Write("\nΒέλτιστη μετάθεση: "); foreach (τιμή int στο αποτέλεσμα) Console.Write(value + " "); Console.WriteLine("\nΜέγιστο ποσό: (0)", smax); αυτοκρατορία=ταξινομημένος; αυτοκρατορία=ταξινομημένος; αυτοκρατορία=ταξινομημένος; για (i = 2, j = 0; i< size - 1; i++, j = (size) - 1 + ((i + 1) & 1) - j) empire[i] = sorted[j]; Console.Write("Эвристический алгоритм: "); foreach (int value in empire) Console.Write(value + " "); Console.WriteLine("\nСумма: {0}", SumAbs(empire)); return result; } static void Main(string args) { bool binc; int i, j, n, nmax = 10; int arr; Random rand = new Random(); MaxArr(new int { 1, 2, 3, 4 }, false); MaxArr(new int { 1, 2, 3, 4, 5 }, false); for (n = 6; n < nmax + 1; n++) { arr = new int[n]; for (i = 0; i < n;) { arr[i] = rand.Next(1, 5 * n); binc = true; for (j = 0; j < i; j++) binc &= (arr[i] != arr[j]); if (binc) i++; } MaxArr(arr, false); } }

Αποτελέσματα:

Αρχικό δείγμα: 1 2 3 4 Ταξινομημένο δείγμα: 1 2 3 4 Καλύτερη μετάθεση: 2 4 1 3 Μέγιστο άθροισμα: 7 Ευρετικό: 2 4 1 3 Άθροισμα: 7 Αρχικό δείγμα: 1 2 3 4 5 Ταξινομημένο δείγμα: 1 2 3 4 5 Καλύτερη μετάθεση: 2 4 1 5 3 Μέγιστο άθροισμα: 11 Ευρετικός αλγόριθμος: 2 4 1 5 3 Άθροισμα: 11 Αρχικό δείγμα: 26 10 21 4 27 5 Ταξινομημένο δείγμα: 4 5 10 21 26 27 Καλύτερη μετάθεση: 10 27 26 Μέγιστο άθροισμα: 99 Ευρετικό: 10 26 4 27 5 21 Άθροισμα: 99 Αρχικό δείγμα: 34 3 32 16 28 27 26 Ταξινομημένο δείγμα: 3 16 26 27 28 32 34 Καλύτερη μετάθεση: 26 28 3 7ur 342 : 26 28 3 34 16 32 27 Άθροισμα: 97 Αρχικό δείγμα: 27 3 34 38 18 29 31 39 Ταξινομημένο δείγμα: 3 18 27 29 31 34 38 39 Καλύτερη μετάθεση: 29 3 34 38 39 29 34 3 39 18 38 27 31 Άθροισμα: 128 Αρχικό δείγμα: 40 27 4 9 32 35 41 39 2 Ταξινομημένο δείγμα: 2 4 9 27 32 35 39 40 41 Καλύτερη μετάθεση: 32 2 39 4 40 9 41 27 35 Μέγιστο άθροισμα: 223 Ευρετικός αλγόριθμος: 27 35 2 41 4 40 9 39 32 Άθροισμα: 221 Αρχικό δείγμα: 41 35 18 343 2 24 25 27 33 34 35 41 45 Καλύτερη μετάθεση: 27 34 16 35 18 41 24 45 25 33 Μέγιστο άθροισμα: 150 Ευρετικό: 27 34 16 45 18 41 24 335 Sum

Με αυτόν τον τρόπο:

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

ΓΕΝΙΚΗ ΑΠΟΦΑΣΗ (10.02.2018)

Αφήνω
a = (a 0 = M 1 , a 1 = M 2 , ..., a n-2 = M n-1 , a n-1 = M n ) - αρχική ακολουθία,
b = (b 0 , b 1 , …, b n-2 , b n-1 ) - η ίδια ακολουθία σε αύξουσα σειρά,
с = (c 0 , c 1 , ..., c n-2 , c n-1 ) - απαιτούμενη ακολουθία.

Εξετάστε χωριστά τις περιπτώσεις άρτιου και περιττού ν.

Περίπτωση n = 2k

S(a) = S c (a) - |a n-1 - a 0 |, όπου
S γ α) = |a 0 - a 1 | + |a 1 - a 2 | + … + |a n-3 - a n-2 | + |a n-2 - a n-1 | + |a n-1 - a 0 |.

Το S c (a) είναι ένα αλγεβρικό άθροισμα που περιέχει κάθε αρχικό στοιχείο a i δύο φορές και η μέγιστη τιμή του είναι ίση με

S c_max = 2∑ i = 0, …, k-1 (h i - b i), όπου h i = b i+k , i = 0…k-1.

Αυτή η τιμή επιτυγχάνεται σε δύο παραλλαγές μεταθέσεων:
1) c 2i h (όλα τα μεγαλύτερα στοιχεία έχουν ζυγούς δείκτες).
2) c 2i + 1 h (όλα τα μεγαλύτερα στοιχεία έχουν περιττούς δείκτες).

Ταυτόχρονα, το ελάχιστο |a n-1 - a 0 | = b k - b k-1 επιτυγχάνεται με την τοποθέτηση ενός ζεύγους διάμεσων στοιχείων στα άκρα της ακολουθίας c.

Το μέγιστο άθροισμα S είναι ίσο με S max = 2∑ i = 0, …, k-2 (b i+k - b i) + b k-1 - b k , ή

S max = 2∑ i = 0, …, k-2 (b n-1-i - b i) + b n-k - b k-1,

και επιτυγχάνεται σε εκείνες τις περιπτώσεις που η ακολουθία c περιέχει τα μεγαλύτερα στοιχεία σε μοτίβο σκακιέρας, και τα διάμεσα στοιχεία b k-1 και b k βρίσκονται στα άκρα της ακολουθίας.
Ο αριθμός τέτοιων μεταθέσεων για δύο διαφορετικά a i είναι 2(k-1)! 2.

Περίπτωση n = 2k+1

Μια παρόμοια θεώρηση δείχνει ότι το μέγιστο του S είναι ίσο με

S max = 2∑ i=0…k-2 (b k+2+i - b k) + b k+1 - b k-1 + max (b k+1 - b k , b k - b k-1), ή

S max = 2∑ i=0…k-2 (b n-1-i - b i) + b n-k - b k-1 + max (b k+1 - b k , b k - b k-1),

και επιτυγχάνεται σε εκείνες τις περιπτώσεις όπου στοιχεία με δείκτες μεγαλύτερους από k κλιμακώνονται και το διάμεσο στοιχείο και το στοιχείο που βρίσκεται πιο κοντά σε αυτό βρίσκονται στα άκρα της ακολουθίας.
Ο αριθμός τέτοιων μεταθέσεων για ζεύγος διακριτό a i δεν είναι μικρότερος από (k-1)!k! (αν η διάμεσος διαφέρει από τους πλησιέστερους γείτονες κατά την ίδια τιμή, τότε υπάρχουν διπλάσιες μεταθέσεις).

ΠΡΟΓΡΑΜΜΑ (C#):

Δημόσιο στατικό κενό T(κείμενο συμβολοσειράς, χρονόμετρο χρονόμετρου) ( TimeSpan ts = timer.Elapsed; string elapsedTime = String.Format("(0:00):(1:00):(2:00).(3:00) ", ts.Hours, ts.Minutes, ts.Seconds, ts.Milliseconds / 10); Console.Write(text + elapsedTime); ) public static int FactGen(int n) ( int fact = new int; fact = 1; για (int i = 1; i< n + 1; i++) fact[i] = i * fact; return fact; } public static int PermsGenerator(int arr, int num, int fact) { int i, j, f, newind, newnum, newval, size = arr.Length; int result = new int; Array.Copy(arr, result, size); for (i = 0, newnum = num; i < size - 1; i++) { f = fact; newind = i; while (newnum >= f) ( newind++; newnum -= f; ) newval = αποτέλεσμα; για (j = newind; j > i; j--) αποτέλεσμα[j] = αποτέλεσμα; αποτέλεσμα[i] = newval; ) αποτέλεσμα επιστροφής· ) public static int SumAbs(int arr) ( int sum = 0, prev = arr; foreach (int value in arr) ( sum += Math.Abs(value - prev); prev = value; ) return sum; ) public static int CalcOptQuant (int n) ( int k = (n - 1) / 2, k2 = Math.Max(k-2, 0); int fact = FactGen(k + 2); return 2*fact[k] * ( (n-k-k< 2) ? fact : fact[k]); } public static int CalcMaxSum(int brr) { int i, size = brr.Length, k = size / 2, sum = 0; for (i = 0; i < k - 1; i++) sum += brr - brr[i]; sum = 2 * sum + brr - brr; if (size - 2 * k >0) άθροισμα += Math.Max(brr - brr[k], brr[k] - brr); επιστροφή αθροίσματος; ) public static int MaxArr(int arr, bool detprn) ( int i, j, sum, smax = -1, size = arr.Length; int perm, result = new int, fact = FactGen(size), sorted = new int , empire = new int; Χρονόμετρο sw = νέο Χρονόμετρο(); Console.WriteLine("\nΑρχική επιλογή: "); foreach (τιμή int σε arr) Console.Write(value + " "); sw.Restart(); για (i = 0; i< fact; i++) { perm = PermsGenerator(arr, i, fact); sum = SumAbs(perm); if (sum >smax) ( smax = άθροισμα; αποτέλεσμα = perm; ) ) if (detprn) Console.Write("\nΒέλτιστες μεταθέσεις"); για (i = 0, j = 0; i< fact; i++) { perm = PermsGenerator(arr, i, fact); sum = SumAbs(perm); if (sum == smax) { j++; if (detprn) { Console.Write("\n#{0}: ", j); foreach (int value in perm) Console.Write(value + " "); } } } Array.Copy(arr, sorted, size); Array.Sort(sorted); Console.WriteLine("\nОтсортированная выборка: "); foreach (int value in sorted) Console.Write(value + " "); Console.Write("\nФакт Наибольшая сумма: {0} Лучших перестановок: {1}" + "\nРасчёт Наибольшая сумма: {2} Лучших перестановок, не менее: {3}", smax, j, CalcMaxSum(sorted), CalcOptQuant(size)); T("\nRuntime = ", sw); sw.Reset(); return result; } static void Main(string args) { bool binc; int i, j, n, nmax = 12; int arr = new int; Random rand = new Random(); MaxArr(new int { 0, 1, 2, 3, 4, 5 }, true); MaxArr(new int { 5, 1, 3, 5, 7, 9 }, true); MaxArr(new int { 0, 1, 2, 3, 4 }, true); MaxArr(new int { 0, 1, 2, 3 }, true); MaxArr(new int { 0, 1, 2 }, true); for (n = 3; n <= nmax; n++) { Array.Resize(ref arr, n); for (i = 0; i < n;) { arr[i] = rand.Next(10, 99); binc = true; for (j = 0; j < i; j++) binc &= (arr[i] != arr[j]); if (binc) i++; } MaxArr(arr, false); } }

ΑΠΟΤΕΛΕΣΜΑΤΑ:

Αρχικό δείγμα: 0 1 2 3 4 5 Καλύτερες μεταθέσεις #1: 2 4 0 5 1 3 #2: 2 4 1 5 0 3 #3: 2 5 0 4 1 3 #4: 2 5 1 4 0 3 #5: 3 0 4 1 5 2 #6: 3 0 5 1 4 2 #7: 3 1 4 0 5 2 #8: 3 1 5 0 4 2 Ταξινομημένο δείγμα: 0 1 2 3 4 5 Γεγονός Υψηλότερο άθροισμα: 17 Καλύτερες μεταθέσεις: 8 Υπολογισμός Μεγαλύτερο άθροισμα: 17 Καλύτερες μεταθέσεις, ελάχ.: 8 Χρόνος εκτέλεσης = 00:00:00.01 Αρχικό δείγμα: 5 1 3 5 7 9 Καλύτερες μεταθέσεις #1: 5 1 7 3 9 5 #2: 5 1 9 3 7 5 # 3 : 5 3 7 1 9 5 #4: 5 3 9 1 7 5 #5: 5 7 1 9 3 5 #6: 5 7 3 9 1 5 #7: 5 9 1 7 3 5 #8: 5 9 3 7 1 5 #9: 5 1 7 3 9 5 #10: 5 1 9 3 7 5 #11: 5 3 7 1 9 5 #12: 5 3 9 1 7 5 #13: 5 7 1 9 3 5 #14 : 5 7 3 9 1 5 #15: 5 9 1 7 3 5 #16: 5 9 3 7 1 5 Ταξινομημένο δείγμα: 1 3 5 5 7 9 Γεγονός Ανώτατο άθροισμα: 24 Καλύτερες μεταθέσεις: 16 Υπολογισμός Υψηλότερο άθροισμα: 24 Καλύτερες μεταθέσεις , τουλάχιστον: 8 Runtime = 00:00:00.01 Αρχικό δείγμα: 0 1 2 3 4 Καλύτερες μεταθέσεις #1: 1 3 0 4 2 #2: 1 4 0 3 2 #3: 2 0 4 1 3 #4: 2 1 4 0 3 #5: 2 3 0 4 1 #6: 2 4 0 3 1 #7: 3 0 4 1 2 #8: 3 1 4 0 2 ταξινομημένο Τρέχον δείγμα: 0 1 2 3 4 Γεγονός Μεγαλύτερο άθροισμα: 11 Καλύτερες μεταθέσεις: 8 Υπολογισμός Μεγαλύτερο άθροισμα: 11 Καλύτερες μεταθέσεις, τουλάχιστον: 4 Χρόνος εκτέλεσης = 00:00:00.01 Αρχικό δείγμα: 0 1 2 3 Καλύτερες μεταθέσεις #1: 1 3 0 2 #2: 2 0 3 1 Ταξινομημένο δείγμα: 0 1 2 3 Γεγονός Υψηλότερο άθροισμα: 7 Καλύτερες μεταθέσεις: 2 Υπολογισμός Υψηλότερο άθροισμα: 7 Καλύτερες μεταθέσεις, τουλάχιστον: 2 Χρόνος εκτέλεσης = 00:00:00.00 Αρχικό δείγμα: 0 1 2 Καλύτερες μεταθέσεις #1: 0 2 1 #2: 1 0 2 #3: 1 2 0 #4: 2 0 1 Ταξινομημένο δείγμα: 0 1 2 λιγότερο από: 2 Χρόνος εκτέλεσης = 00:00:00.01 Αρχικό δείγμα: 25 51 87 Ταξινόμηση δείγμα: 25 51 87 Γεγονός Ανώτατο άθροισμα: 98 Βέλτιστες μεταθέσεις: 2 Υπολογισμός Υψηλότερο άθροισμα: 98 Καλύτερες μεταθέσεις, τουλάχιστον: 2 Χρόνος εκτέλεσης = 00:00:00.00 Αρχικό δείγμα: 78 10 34 64 Ταξινομημένο δείγμα: 10 34 64 78 Fact υψηλότερο : 166 Καλύτερες μεταθέσεις: 2 Υπολογισμός Ανώτατο άθροισμα: 166 Καλύτερες μεταθέσεις, όχι λιγότερο ee: 2 Runtime = 00:00:00.00 Αρχικό δείγμα: 23 26 93 16 45 Ταξινομημένο δείγμα: 16 23 26 45 93 :00:00.00 Αρχικό δείγμα: 85 12 11 13 90 88 Ταξινομημένο 81581 υψηλότερο δείγμα: 16 23 26 45 93 Άθροισμα: 382 Βέλτιστες μεταθέσεις: 8 Υπολογισμός Υψηλότερο άθροισμα: 382 Καλύτερες μεταθέσεις, τουλάχιστον: 8 Χρόνος εκτέλεσης = 00:00:00.00 Αρχικό δείγμα: 82 43 28 55 29 39 18 Ταξινομημένο δείγμα: 18 28 29 559 29 43 206 Καλύτερες μεταθέσεις: 24 Υπολογισμός Ανώτατο άθροισμα: 206 Καλύτερες μεταθέσεις, τουλάχιστον: 24 Χρόνος εκτέλεσης = 00:00:00. 00 Αρχικό δείγμα: 64 20 43 89 47 94 52 71 Ταξινομημένο δείγμα: 20 43 47 52 64 71 89 94 00.02 Αρχικό δείγμα: 45 53 81 17 76 97 26 50 517 515 00.23 Αρχικό δείγμα: 55 51 36 12 82 63 89 58 14 22 Ταξινόμηση δείγματος: 12 14 22 36 51 55 58 63 82 89 Χρόνος εκτέλεσης = 00:00:02.46 493559 46 69556 : 35 49 53 55 65 67 69 78 94 95 96 μεταθέσεις, τουλάχιστον: 5760 Runtime = 00:00:29.21 Αρχικό δείγμα: 50 43 39 64 59 18 81 16 44 12 15 77 Ταξινομημένο δείγμα: 12 15 16 18 39 43 44 50 59 64 77 81

ΑΝΑΛΥΣΗ ΤΩΝ ΑΠΟΤΕΛΕΣΜΑΤΩΝ

Σε όλες τις εξεταζόμενες περιπτώσεις, οι δοκιμές επιβεβαίωσαν πλήρως την προτεινόμενη γενική λύση.

Αυτό το υπολογιστικό φύλλο θα χειριστεί σχεδόν όλους τους υπολογισμούς. Είναι ιδανικό για λογιστικά. Για τους υπολογισμούς, υπάρχουν ειδικά εργαλεία - τύποι. Μπορούν να εφαρμοστούν σε μια περιοχή ή σε μεμονωμένα κελιά. Για να μάθετε τον ελάχιστο ή τον μέγιστο αριθμό σε μια ομάδα κελιών, δεν είναι απαραίτητο να τα αναζητήσετε μόνοι σας. Είναι καλύτερο να χρησιμοποιήσετε τις επιλογές που παρέχονται για αυτό. Θα είναι επίσης χρήσιμο να υπολογίσετε πώς να υπολογίσετε τη μέση τιμή στο Excel.

Αυτό ισχύει ιδιαίτερα σε πίνακες με μεγάλο όγκο δεδομένων. Αν η στήλη, για παράδειγμα, δείχνει τις τιμές των προϊόντων του εμπορικού κέντρου. Και πρέπει να μάθετε ποιο προϊόν είναι το φθηνότερο. Αν το αναζητήσετε "χειροκίνητα", θα χρειαστεί πολύς χρόνος. Αλλά στο Excel, αυτό μπορεί να γίνει με λίγα μόνο κλικ. Το βοηθητικό πρόγραμμα υπολογίζει επίσης τον αριθμητικό μέσο όρο. Εξάλλου, πρόκειται για δύο απλές πράξεις: πρόσθεση και διαίρεση.

Μέγιστο και ελάχιστο

Δείτε πώς μπορείτε να βρείτε τη μέγιστη τιμή στο Excel:

  1. Τοποθετήστε τον κέρσορα κελιού οπουδήποτε.
  2. Μεταβείτε στο μενού "Τύπες".
  3. Κάντε κλικ στην Εισαγωγή συνάρτησης.
  4. Επιλέξτε "MAX" από τη λίστα. Ή γράψτε αυτή τη λέξη στο πεδίο "Αναζήτηση" και κάντε κλικ στο "Εύρεση".
  5. Στο παράθυρο Ορίσματα, εισαγάγετε τις διευθύνσεις του εύρους του οποίου τη μέγιστη τιμή θέλετε να μάθετε. Στο Excel, τα ονόματα κελιών αποτελούνται από ένα γράμμα και έναν αριθμό ("B1", "F15", "W34"). Και το όνομα της περιοχής είναι το πρώτο και το τελευταίο κελί που περιλαμβάνονται σε αυτό.
  6. Αντί για διεύθυνση, μπορείτε να γράψετε πολλούς αριθμούς. Στη συνέχεια, το σύστημα θα δείξει το μεγαλύτερο από αυτά.
  7. Κάντε κλικ στο OK. Το αποτέλεσμα θα εμφανιστεί στο κελί όπου βρισκόταν ο κέρσορας.

Το επόμενο βήμα είναι να καθορίσετε ένα εύρος τιμών

Τώρα θα είναι πιο εύκολο να καταλάβετε πώς να βρείτε την ελάχιστη τιμή στο Excel. Ο αλγόριθμος των ενεργειών είναι εντελώς πανομοιότυπος. Απλώς επιλέξτε "MIN" αντί για "MAX".

Μέση τιμή

Ο αριθμητικός μέσος όρος υπολογίζεται ως εξής: προσθέστε όλους τους αριθμούς από το σύνολο και διαιρέστε με τον αριθμό τους. Στο Excel, μπορείτε να υπολογίσετε αθροίσματα, να μάθετε πόσα κελιά βρίσκονται στη σειρά και ούτω καθεξής. Αλλά είναι πολύ περίπλοκο και μακρύ. Θα πρέπει να χρησιμοποιήσετε πολλές διαφορετικές λειτουργίες. Να έχετε υπόψη σας πληροφορίες. Ή ακόμα και γράψτε κάτι σε ένα κομμάτι χαρτί. Αλλά ο αλγόριθμος μπορεί να απλοποιηθεί.

Δείτε πώς μπορείτε να βρείτε τον μέσο όρο στο Excel:

  1. Τοποθετήστε τον κέρσορα κελιού σε οποιοδήποτε ελεύθερο χώρο στον πίνακα.
  2. Μεταβείτε στην καρτέλα "Τύποι".
  3. Κάντε κλικ στο "Εισαγωγή συνάρτησης".
  4. Επιλέξτε ΜΕΣΟΣ.
  5. Εάν αυτό το στοιχείο δεν βρίσκεται στη λίστα, ανοίξτε το χρησιμοποιώντας την επιλογή "Εύρεση".
  6. Στην περιοχή Number1, εισαγάγετε τη διεύθυνση του εύρους. Ή γράψτε πολλούς αριθμούς σε διαφορετικά πεδία "Number2", "Number3".
  7. Κάντε κλικ στο OK. Η επιθυμητή τιμή θα εμφανιστεί στο κελί.

Έτσι, μπορείτε να πραγματοποιήσετε υπολογισμούς όχι μόνο με θέσεις στον πίνακα, αλλά και με αυθαίρετα σύνολα. Το Excel, στην πραγματικότητα, παίζει το ρόλο μιας προηγμένης αριθμομηχανής.

άλλες μεθόδους

Το μέγιστο, το ελάχιστο και το μέσο όρο μπορούν να βρεθούν με άλλους τρόπους.

  1. Βρείτε τη γραμμή συναρτήσεων με την ένδειξη "Fx". Βρίσκεται πάνω από την κύρια περιοχή εργασίας του τραπεζιού.
  2. Τοποθετήστε τον κέρσορα σε οποιοδήποτε κελί.
  3. Εισαγάγετε ένα όρισμα στο πεδίο "Fx". Ξεκινά με πρόσημο ίσου. Στη συνέχεια έρχεται ο τύπος και η διεύθυνση του εύρους/κελλιού.
  4. Θα πρέπει να λάβετε κάτι σαν "=MAX(B8:B11)" (μέγιστο), "=MIN(F7:V11)" (ελάχιστο), "=AVERAGE(D14:W15)" (μέσος όρος).
  5. Κάντε κλικ στο "τικ" δίπλα στο πεδίο συνάρτησης. Ή απλώς πατήστε Enter. Η επιθυμητή τιμή θα εμφανιστεί στο επιλεγμένο κελί.
  6. Ο τύπος μπορεί να αντιγραφεί απευθείας στο ίδιο το κελί. Το αποτέλεσμα θα είναι το ίδιο.

Το εργαλείο Excel "Αυτόματες λειτουργίες" θα σας βοηθήσει να βρείτε και να υπολογίσετε.

  1. Τοποθετήστε τον κέρσορα στο κελί.
  2. Βρείτε το κουμπί του οποίου το όνομα αρχίζει με "Auto". Αυτό εξαρτάται από την προεπιλεγμένη επιλογή που έχει επιλεγεί στο Excel (AutoSum, AutoNumber, AutoOffset, AutoIndex).
  3. Κάντε κλικ στο μαύρο βέλος κάτω από αυτό.
  4. Επιλέξτε MIN (ελάχιστο), MAX (μέγιστο) ή AVERAGE (μέσος όρος).
  5. Ο τύπος θα εμφανιστεί στο σημειωμένο κελί. Κάντε κλικ σε οποιοδήποτε άλλο κελί - θα προστεθεί στη συνάρτηση. "Σύρετε" το κουτί γύρω του για να καλύψετε το εύρος. Ή Ctrl-κλικ στο πλέγμα για να επιλέξετε ένα στοιχείο κάθε φορά.
  6. Όταν τελειώσετε, πατήστε Enter. Το αποτέλεσμα θα εμφανιστεί σε ένα κελί.

Στο Excel, ο υπολογισμός του μέσου όρου είναι αρκετά εύκολος. Δεν χρειάζεται να προσθέσετε και στη συνέχεια να διαιρέσετε το ποσό. Υπάρχει μια ξεχωριστή λειτουργία για αυτό. Μπορείτε επίσης να βρείτε το ελάχιστο και το μέγιστο σε ένα σετ. Είναι πολύ πιο εύκολο από το να μετράτε με το χέρι ή να αναζητάτε αριθμούς σε ένα τεράστιο υπολογιστικό φύλλο. Επομένως, το Excel είναι δημοφιλές σε πολλούς τομείς δραστηριότητας όπου απαιτείται ακρίβεια: επιχειρήσεις, έλεγχος, διαχείριση αρχείων προσωπικού, οικονομικά, εμπόριο, μαθηματικά, φυσική, αστρονομία, οικονομία, επιστήμη.