1 00:00:00,000 --> 00:00:06,370 2 00:00:06,370 --> 00:00:08,150 >> JASON Hirschhorn: Welcome σε τρεις εβδομάδες, ο καθένας. 3 00:00:08,150 --> 00:00:11,650 Έχουμε μια κουραστική, αλλά συναρπαστικό, τμήμα μπροστά μας. 4 00:00:11,650 --> 00:00:17,010 Έτσι, η πρώτη, γιατί έχουμε κάνει κάποια πρόοδο με την πορεία, αλλά έχουμε ακόμα 5 00:00:17,010 --> 00:00:20,570 έχουν πολλή μάθησης που μένει να γίνει, είμαι πρόκειται να σας δείξω παιδιά κάποιους πόρους 6 00:00:20,570 --> 00:00:24,160 ότι θα πρέπει να αποδειχθεί εξαιρετικά χρήσιμο καθώς πλησιάζετε όχι μόνο σας 7 00:00:24,160 --> 00:00:28,130 πρόβλημα θέτει, αλλά και αφομοιώσει όλα το υλικό που σας δίνουμε σε παιδιά 8 00:00:28,130 --> 00:00:30,800 διαλέξεις και σορτς και ενότητα. 9 00:00:30,800 --> 00:00:34,790 >> Στη συνέχεια, θα πάμε να περάσουν τα πρώτα 20 25 λεπτά από το τμήμα που πηγαίνει πέρα ​​από 10 00:00:34,790 --> 00:00:38,630 GDB, η οποία μπορεί ή δεν μπορεί να έχει χρησιμοποιηθεί στο σημείο αυτό, αλλά είναι ένα 11 00:00:38,630 --> 00:00:42,570 απίστευτα χρήσιμο εργαλείο που θα να σας βοηθήσει να debug τα προγράμματά σας. 12 00:00:42,570 --> 00:00:46,060 Πολλοί από εσάς μπορεί να έχετε χρησιμοποιήσει printf στην μέσα από το πρόγραμμά σας για να καταλάβουμε 13 00:00:46,060 --> 00:00:47,430 τι ισοφάρισε μια μεταβλητή. 14 00:00:47,430 --> 00:00:52,060 GDB είναι ακόμα καλύτερα από ό, τι printf και δεν βίδα μέχρι τον κωδικό σας επειδή 15 00:00:52,060 --> 00:00:53,320 να το εκτελέσετε ένα εκτελέσιμο αρχείο. 16 00:00:53,320 --> 00:00:56,500 Έτσι θα πάμε πάνω από τα 10 πιο χρήσιμες εντολές που χρειάζεστε για GDB, και είμαστε 17 00:00:56,500 --> 00:01:00,540 πρόκειται να πάει σε μια άσκηση από κοινού, ώστε στο πρόβλημα που τρεις και πέρα, θα 18 00:01:00,540 --> 00:01:03,320 μπορούν να χρησιμοποιήσουν GDB για να βοηθήσει στον εντοπισμό σφαλμάτων προγράμματά σας. 19 00:01:03,320 --> 00:01:06,420 Και τέλος, θα πάμε να πάει πέρα ​​από μερικές ταξινόμησης και αναζήτησης αλγορίθμων 20 00:01:06,420 --> 00:01:10,590 ότι είδατε στην διάλεξη, και είμαστε πρόκειται πραγματικά κώδικα, όχι μόνο 21 00:01:10,590 --> 00:01:17,360 ψευδοκώδικα, αλλά κώδικα δυαδική αναζήτηση, bubble sort, και το είδος επιλογής. 22 00:01:17,360 --> 00:01:20,090 >> Έτσι, η πρώτη, θέλω να πάω επί των πόρων. 23 00:01:20,090 --> 00:01:23,530 Αυτό είναι μια μεγάλη λίστα, και είναι μικρότερη γραμματοσειρά γιατί είχα πολλά να 24 00:01:23,530 --> 00:01:24,390 ταιριάζουν εδώ. 25 00:01:24,390 --> 00:01:26,950 Αλλά αυτά θα σας βοηθήσει όχι μόνο, και πάλι, με τις προβληματικές σύνολα και 26 00:01:26,950 --> 00:01:30,760 εύπεπτος πληροφορίες μάθατε, αλλά σίγουρα, έρθει η ώρα κουίζ, αυτά θα 27 00:01:30,760 --> 00:01:32,130 είναι απίστευτα χρήσιμο. 28 00:01:32,130 --> 00:01:34,700 Έτσι, η πρώτη, η διάλεξη σημειώνει. 29 00:01:34,700 --> 00:01:39,480 Αν πάτε σε cs50.net/lectures και μεταβείτε στην συγκεκριμένη εβδομάδα και την ημέρα, 30 00:01:39,480 --> 00:01:43,120 θα δείτε ότι υπάρχουν σημειώσεις για κάθε διάλεξη, η οποία δεν είναι απλώς μια 31 00:01:43,120 --> 00:01:47,250 μεταγραφή, αλλά μια επεξεργασμένη εκδοχή της τι καλύφθηκε σε διάλεξη με κωδικό 32 00:01:47,250 --> 00:01:49,610 αποσπάσματα και άλλες χρήσιμες μεζέδες. 33 00:01:49,610 --> 00:01:52,220 Συστήνω ανεπιφύλακτα να πάτε σε σχέση με αυτές. 34 00:01:52,220 --> 00:01:55,340 Και στη συνέχεια, καθώς, υπάρχει πηγαίο κώδικα διατίθεται από κάθε διάλεξη. 35 00:01:55,340 --> 00:02:00,050 Και πάλι, αυτές οι διαφάνειες θα είναι επίσης διαθέσιμο στην ηλεκτρονική διεύθυνση cs50.net/sections 36 00:02:00,050 --> 00:02:01,480 αυτό το βράδυ. 37 00:02:01,480 --> 00:02:06,860 >> Έτσι, το δεύτερο είναι τα σορτς κάθε εβδομάδα που καλύπτουν θέματα, συνήθως 5 έως 15 38 00:02:06,860 --> 00:02:08,090 λεπτά σε μήκος. 39 00:02:08,090 --> 00:02:12,310 Και αυτά ελπίζουμε ότι θα σας δώσει μια μεγάλη αλφαβητάρι για διάφορα θέματα. 40 00:02:12,310 --> 00:02:12,870 Τρίτον - 41 00:02:12,870 --> 00:02:16,370 και αυτό είναι το ολοκαίνουργιο αυτό έτος - είναι study.cs50.net. 42 00:02:16,370 --> 00:02:20,110 Αν δεν το έχετε ελέγξει έξω, συνιστούμε να το κάνετε αυτό. 43 00:02:20,110 --> 00:02:21,100 Μπορείτε να επιλέξετε ένα θέμα. 44 00:02:21,100 --> 00:02:23,040 Έχουμε δεκάδες θέματα εκεί. 45 00:02:23,040 --> 00:02:24,770 Έτσι, για παράδειγμα, μπορείτε να επιλέξετε λειτουργίες. 46 00:02:24,770 --> 00:02:27,270 Σας δίνει κάποιες διαφάνειες και σημειώνει τις λειτουργίες. 47 00:02:27,270 --> 00:02:31,190 Αυτοί είναι στην πραγματικότητα οι διαφάνειες που TFs ενθαρρύνονται να χρησιμοποιούν κατά τη διάρκεια μας 48 00:02:31,190 --> 00:02:32,710 παρουσιάσεις στο τμήμα. 49 00:02:32,710 --> 00:02:35,040 Υπάρχει, επίσης, συμβουλές και κόλπα για την αντιμετώπιση με λειτουργίες, και δεν υπάρχει 50 00:02:35,040 --> 00:02:37,290 προβλήματα πρακτικής που βοηθούν εργάζεστε με λειτουργίες. 51 00:02:37,290 --> 00:02:41,500 Μπορούμε επίσης να σας δώσει τις συνδέσεις με την σε σύντομο λειτουργίες και οι χρόνοι που λειτουργεί 52 00:02:41,500 --> 00:02:42,750 έχουν καταλήξει σε διάλεξη. 53 00:02:42,750 --> 00:02:46,550 Έτσι study.cs50.net, ολοκαίνουργιο αυτό χρόνο, ένας φανταστικός πόρος. 54 00:02:46,550 --> 00:02:52,180 >> Στη συνέχεια, έχω τον άνθρωπο, που είναι το εγχειρίδιο εντολών που μπορείτε να εκτελέσετε το 55 00:02:52,180 --> 00:02:52,770 γραμμή εντολών. 56 00:02:52,770 --> 00:02:57,880 Έτσι, εάν έχετε οποιαδήποτε απορία σχετικά με το εντολή, για παράδειγμα, ραντ, η οποία θα 57 00:02:57,880 --> 00:03:00,900 αντιμετώπισε την περασμένη εβδομάδα κατά τη διάρκεια του τμήματος και έχετε αντιμετωπίσει πιθανό το 58 00:03:00,900 --> 00:03:05,380 το πρόβλημά σας που όταν διέρχεται από το δημιουργήσετε κώδικα, αλλά αν πληκτρολογήσετε τον άνθρωπο 59 00:03:05,380 --> 00:03:09,980 rand, θα έχετε τη σελίδα που Σας λέει όλα σχετικά με ραντ. 60 00:03:09,980 --> 00:03:14,040 Σας δίνει ό, τι χρειάζεται, η παραμέτρους που χρειάζεται, καθώς και η απόδοση 61 00:03:14,040 --> 00:03:16,530 τύπου και μια σύντομη περιγραφή αυτής της λειτουργίας. 62 00:03:16,530 --> 00:03:17,500 >> Έτσι ελέγξτε έξω ραντ. 63 00:03:17,500 --> 00:03:22,270 Μπορεί να είναι λίγο φλύαρος και σύγχυση, έτσι μερικές φορές θεωρώ ότι 64 00:03:22,270 --> 00:03:26,150 απλά Googling αυτό που θέλω να μάθω είναι ο καλύτερος τρόπος για να βρείτε την απάντηση. 65 00:03:26,150 --> 00:03:27,940 Έτσι πρακτική με την Google. 66 00:03:27,940 --> 00:03:28,600 Πάρτε καλός στο Google. 67 00:03:28,600 --> 00:03:30,600 Θα γίνει ο καλύτερος φίλος σας. 68 00:03:30,600 --> 00:03:34,300 >> Όπως και το Google, αν δεν μπορείτε να το βρείτε στο Google, cs50.net/discuss, είναι 69 00:03:34,300 --> 00:03:35,550 το φόρουμ συζήτησης. 70 00:03:35,550 --> 00:03:39,390 Οι πιθανότητες είναι, εάν έχετε μια ερώτηση, ένα 700 + συμμαθητές σας έχει, επίσης, ότι 71 00:03:39,390 --> 00:03:42,110 ζήτημα και μπορεί να ζητήσει ήδη στην συζητούν 72 00:03:42,110 --> 00:03:43,540 φόρουμ και έχουν απαντηθεί. 73 00:03:43,540 --> 00:03:48,130 Έτσι, εάν έχετε μια κοινή ερώτηση ή έχετε μια ερώτηση που νομίζετε 74 00:03:48,130 --> 00:03:52,300 Ίσως άλλοι άνθρωποι θα μπορούσαν να έχουν τρέξει σε, ελέγξτε cs50.net/discuss. 75 00:03:52,300 --> 00:03:55,450 >> Τέλος, τα δύο τελευταία, αν θέλετε να μιλήσετε σε ένα πραγματικό ανθρώπινο ον, το γραφείο 76 00:03:55,450 --> 00:03:57,770 Ώρες λειτουργίας Δευτέρα έως Παρασκευή. 77 00:03:57,770 --> 00:04:00,850 Υπάρχει, επίσης, σε απευθείας σύνδεση ώρες γραφείου για φοιτητές επέκτασης. 78 00:04:00,850 --> 00:04:04,370 Και τελευταίο, αλλά σίγουρα όχι λιγότερο σημαντικό, μου, θαυμαστικό. 79 00:04:04,370 --> 00:04:05,960 Έχετε όλοι τα στοιχεία επικοινωνίας μου. 80 00:04:05,960 --> 00:04:11,940 Αν χρειαστείς κάτι, παρακαλώ ποτέ διστάσετε να επικοινωνήσετε μαζί μου. 81 00:04:11,940 --> 00:04:14,020 Πάντα να αισθάνονται ελεύθεροι να το πράξουν. 82 00:04:14,020 --> 00:04:17,490 Πολύ λίγοι από εσάς με έχουν προστεθεί στο Gchat, έτσι ώστε να ήταν απογοητευτική, 83 00:04:17,490 --> 00:04:20,410 αλλά ελπίζουμε ότι θα αλλάξει μεταξύ αυτό και το επόμενο τμήμα. 84 00:04:20,410 --> 00:04:22,105 Οποιεσδήποτε ερωτήσεις μέχρι τώρα σχετικά με τους πόρους; 85 00:04:22,105 --> 00:04:25,670 86 00:04:25,670 --> 00:04:27,450 Μεγάλη. 87 00:04:27,450 --> 00:04:34,280 >> Τέλος, ένα άλλο βύσμα για ανατροφοδότηση, sayat.me/cs50. 88 00:04:34,280 --> 00:04:37,050 Μπορείτε να μου δώσετε ανώνυμα ανατροφοδότηση σχετικά με το πώς κάνω. 89 00:04:37,050 --> 00:04:38,320 Αυτό ήταν πραγματικά χρήσιμη την περασμένη εβδομάδα. 90 00:04:38,320 --> 00:04:41,890 Πήρα ένα ζευγάρι των σχολίων από σας παιδιά αμέσως μετά το τμήμα, καθώς και από 91 00:04:41,890 --> 00:04:44,750 άλλους μαθητές που την παρακολούθησαν κατά τη διάρκεια της εβδομάδας, και 92 00:04:44,750 --> 00:04:46,830 ήταν απίστευτα χρήσιμο. 93 00:04:46,830 --> 00:04:50,250 Πάω να προσπαθήσουμε και να περιορίσει τη χρήση μου η λέξη «γλυκό», αλλά θα δείξω μου 94 00:04:50,250 --> 00:04:52,410 τον ενθουσιασμό και τον ενθουσιασμό με άλλους τρόπους. 95 00:04:52,410 --> 00:04:56,550 Αλλά υπήρχαν και άλλες πρόσθετες ουσιαστικές ανατροφοδοτήσεις, 96 00:04:56,550 --> 00:04:57,600 τόσο συν και τα δέλτα. 97 00:04:57,600 --> 00:05:00,480 Επομένως, σας παρακαλώ, σας δίνω παιδιά ανατροφοδότηση σχετικά με το πρόβλημα σύνολα σας. 98 00:05:00,480 --> 00:05:01,790 Μη διστάσετε να μου δώσει πληροφορίες για τη διδασκαλία μου. 99 00:05:01,790 --> 00:05:04,010 Είμαι εδώ για σας παιδιά. 100 00:05:04,010 --> 00:05:05,270 >> Μεγάλη. 101 00:05:05,270 --> 00:05:07,020 Αυτό είναι το μόνο που έχω για το πρώτο τμήμα. 102 00:05:07,020 --> 00:05:08,565 Πιστεύει κανείς να έχει οποιαδήποτε ερωτήσεις μέχρι τώρα; 103 00:05:08,565 --> 00:05:12,370 104 00:05:12,370 --> 00:05:14,640 Και έχω ένα σημείωμα για το κέντρο ελέγχου. 105 00:05:14,640 --> 00:05:21,200 Παράταση μαθητές μου έχουν στείλει μήνυμα λέγοντας ότι δεν παίρνετε οποιοδήποτε αρχείο ήχου, 106 00:05:21,200 --> 00:05:23,870 αλλά αυτό είναι από την εξουσία μου για να διορθώσετε. 107 00:05:23,870 --> 00:05:25,280 Έτσι, ελπίζουμε, ότι παίρνει επιλυθούν σύντομα. 108 00:05:25,280 --> 00:05:28,850 Αν παρακολουθείτε σε απευθείας σύνδεση, γεια, αλλά δεν μπορείτε να με ακούσετε. 109 00:05:28,850 --> 00:05:33,860 >> Έτσι, η πρώτη, πρόκειται να περάσουν από GDB. 110 00:05:33,860 --> 00:05:37,100 GDB, όπως άφησε να εννοηθεί σε νωρίτερα, είναι ένα εργαλείο εντοπισμού σφαλμάτων 111 00:05:37,100 --> 00:05:39,040 πολύ καλύτερα από ό, τι printf. 112 00:05:39,040 --> 00:05:44,700 Έτσι για να ξεκινήσετε με το GDB, εσείς, αν Θέλετε να ανοίξει η συσκευή σας 113 00:05:44,700 --> 00:05:49,070 και να λάβει το αρχείο που θα σας αποσταλεί με email νωρίτερα - το αρχείο αυτό θα είναι επίσης 114 00:05:49,070 --> 00:05:51,940 Διατίθεται σε ένα κομμάτι - 115 00:05:51,940 --> 00:05:55,700 και να τρέξει GDB. / το όνομα του αρχείου. 116 00:05:55,700 --> 00:05:58,580 Πρώτον, φυσικά, θα πρέπει να καταρτίζουν αρχείο επειδή GDB λειτουργεί μόνο σε 117 00:05:58,580 --> 00:05:59,890 εκτελέσιμα αρχεία. 118 00:05:59,890 --> 00:06:02,300 >> Αλλά αν ποτέ θέλετε να ξεκινήσετε GDB, το πρώτο πράγμα που κάνετε, 119 00:06:02,300 --> 00:06:04,550 τρέχετε GDB. / Καίσαρα. 120 00:06:04,550 --> 00:06:08,340 Έτσι, αυτό είναι το όνομα του προγράμματος είμαστε πρόκειται να πάει με αυτό τώρα. 121 00:06:08,340 --> 00:06:12,810 Έτσι, Πάω να γράψω κάνει Καίσαρα, η οποία θα μου δώσει ένα εκτελέσιμο αρχείο 122 00:06:12,810 --> 00:06:14,100 εδώ επισημαίνονται με πράσινο. 123 00:06:14,100 --> 00:06:19,250 Και στη συνέχεια, Πάω να τρέξει GDB. / Cesar. 124 00:06:19,250 --> 00:06:19,810 >> Και εκεί θα πάτε. 125 00:06:19,810 --> 00:06:24,540 Βλέπετε έχουμε κάποιο κείμενο μου λέει σχετικά με την έκδοση της GDB, δίνοντάς μου 126 00:06:24,540 --> 00:06:27,570 ορισμένες πληροφορίες για την εγγύηση, και στη συνέχεια θα έχουν την προτροπή του ΑΕΠ, το οποίο μοιάζει κάπως 127 00:06:27,570 --> 00:06:29,350 της παρόμοια με την εντολή μας prompt γραμμή, αλλά θα δείτε ότι είναι ανοιχτό 128 00:06:29,350 --> 00:06:32,510 paren, GDB, κοντά paren. 129 00:06:32,510 --> 00:06:36,520 Πριν συνεχίσουμε και να διορθώσετε αυτό το αρχείο που έστειλα σε όλους σας, ας δούμε 130 00:06:36,520 --> 00:06:40,220 μερικές χρήσιμες εντολές έτσι έχουμε μια αίσθηση του τι πρόκειται να καλύψει. 131 00:06:40,220 --> 00:06:45,060 >> Αυτές οι εντολές που αναφέρονται εδώ στο σειρά με την οποία μπορώ να χρησιμοποιήσω γενικά τους. 132 00:06:45,060 --> 00:06:50,230 Έτσι, μπορώ να ξεκινήσω το πρόγραμμά μου με το τρέξιμο GBD. / Όνομα του προγράμματος, 133 00:06:50,230 --> 00:06:51,360 στην περίπτωση αυτή, ο Καίσαρας. 134 00:06:51,360 --> 00:06:57,430 Και τότε το πρώτο πράγμα που κάνω το 99,9% από τη στιγμή της διακοπής τύπου σημαίνει. 135 00:06:57,430 --> 00:06:59,070 Αυτό θέτει ένα σημείο καμπής στο κεντρικό. 136 00:06:59,070 --> 00:07:03,260 Ουσιαστικά, αυτό που κάνετε εκεί είναι το πρόγραμμα πρόκειται να σταματήσει σε 137 00:07:03,260 --> 00:07:06,100 κύριες ώστε να μπορείτε να αρχίσει να εξετάζει το line από τη γραμμή, αντί να τρέχει όλα 138 00:07:06,100 --> 00:07:07,040 ο τρόπος μέσω του. 139 00:07:07,040 --> 00:07:09,730 Μπορείτε να σπάσει σε διάφορα σημεία κωδικό σας, αλλά το κύριο είναι γενικά μια 140 00:07:09,730 --> 00:07:11,870 καλό μέρος για να ξεκινήσετε. 141 00:07:11,870 --> 00:07:14,840 >> Η επόμενη εντολή τρέχω Είναι τρέξιμο. 142 00:07:14,840 --> 00:07:17,400 Αυτό ξεκινά το πρόγραμμα που εκτελείται, και αν χρειαστεί να εισαγάγετε γραμμή εντολών 143 00:07:17,400 --> 00:07:19,090 επιχειρήματα, μπορείτε να εκτελέσετε αυτή την εντολή. 144 00:07:19,090 --> 00:07:20,500 Τρέξτε με τα επιχειρήματα. 145 00:07:20,500 --> 00:07:25,000 Έτσι, δεδομένου ότι πρόκειται πάνω από μια έκδοση C, η οποία είναι το πρόγραμμα σας παιδιά 146 00:07:25,000 --> 00:07:26,160 έγραψε για το chipset δύο - 147 00:07:26,160 --> 00:07:29,880 αυτό, φυσικά, έχει κάποια σφάλματα σε αυτό που ελπίζουμε ότι θα βρούμε - 148 00:07:29,880 --> 00:07:32,810 θα πάμε να τρέχει τρέχει με κάποια εντολή τα επιχειρήματα της γραμμής επειδή Καίσαρα, 149 00:07:32,810 --> 00:07:34,860 όπως εσείς γνωρίζετε ανά το πρόβλημα που spec, παίρνει κάποιο 150 00:07:34,860 --> 00:07:36,380 επιχειρήματα της γραμμής εντολών. 151 00:07:36,380 --> 00:07:40,000 >> Το επόμενο ζευγάρι των εντολών, η επόμενη το ένα είναι στην πραγματικότητα ονομάζεται το επόμενο. 152 00:07:40,000 --> 00:07:42,470 Αυτό παίρνει γραμμή σας από τη γραμμή μέσω του προγράμματος σας. 153 00:07:42,470 --> 00:07:45,800 Έτσι, το χτύπημα n τότε το Enter, θα παίρνει στην επόμενη γραμμή, εκτέλεση 154 00:07:45,800 --> 00:07:46,880 η προηγούμενη γραμμή. 155 00:07:46,880 --> 00:07:49,440 Βήμα που χρειάζεται όχι μόνο να η επόμενη γραμμή, αλλά 156 00:07:49,440 --> 00:07:51,070 σας μεταφέρει μέσα στις συναρτήσεις. 157 00:07:51,070 --> 00:07:54,310 Έτσι, αν έχετε γράψει μια λειτουργία στην τον κωδικό σας ή αν θέλετε να εξερευνήσετε ένα 158 00:07:54,310 --> 00:07:57,820 να θ, για παράδειγμα, μπορείτε να πατήσετε s, και αντί να πηγαίνει στην επόμενη γραμμή 159 00:07:57,820 --> 00:08:02,390 το αρχείο που περνάτε δεξιά τώρα, θα είστε πραγματικά βήμα σε 160 00:08:02,390 --> 00:08:04,670 αυτή τη λειτουργία και να δείτε τον κωδικό της. 161 00:08:04,670 --> 00:08:12,300 >> Λίστα σας δείχνει, σε πολύ φιλικό προς το χρήστη μορφή, οι 10 περίπου γραμμές γύρω από 162 00:08:12,300 --> 00:08:14,940 όπου σήμερα είναι στον κώδικά σας ώστε να μπορείτε να δείτε πραγματικά το αρχείο 163 00:08:14,940 --> 00:08:17,810 αντί να χρειάζεται να προβείτε σε διέπουν τις σχέσεις μεταξύ των διαφορετικών απόψεων. 164 00:08:17,810 --> 00:08:21,890 Εκτύπωση είναι σαν printf, όπως υποδηλώνει το όνομά του. 165 00:08:21,890 --> 00:08:24,020 Αυτό σας δείχνει ό, τι ισούται με μια μεταβλητή. 166 00:08:24,020 --> 00:08:25,870 >> Πληροφορίες ντόπιοι είναι πραγματικά χρήσιμη. 167 00:08:25,870 --> 00:08:27,740 Αυτή είναι μια ειδική έκδοση της εκτύπωσης. 168 00:08:27,740 --> 00:08:31,770 Πληροφορίες ντόπιοι σας παρουσιάζει όλες της τοπικής μεταβλητές, όλα αυτά εκτυπώνει για σας 169 00:08:31,770 --> 00:08:33,380 που είναι σήμερα διαθέσιμα. 170 00:08:33,380 --> 00:08:36,360 Γι 'αυτό και γενικά, αντί να χρειάζεται να εκτυπώσετε τις τέσσερις μεταβλητές που είμαι 171 00:08:36,360 --> 00:08:39,929 περίεργος για το αν είμαι σε ένα βρόχο for, για παράδειγμα, γράφω μόνο πληροφορίες ντόπιους, 172 00:08:39,929 --> 00:08:43,470 και θα μου τι μου μετρητή i δείχνουν ισούται, καθώς και η συστοιχία που είμαι 173 00:08:43,470 --> 00:08:45,130 εργάζονται σε ίσους. 174 00:08:45,130 --> 00:08:47,530 >> Τέλος, συνεχίζονται. 175 00:08:47,530 --> 00:08:49,300 Πληκτρολογώντας διάλειμμα που σταματά στο σημείο θραύσης. 176 00:08:49,300 --> 00:08:51,380 Μπορείτε να περπατήσετε μέσω της γραμμής από Σύμφωνα με το επόμενο βήμα και. 177 00:08:51,380 --> 00:08:55,640 Συνέχεια τρέχει το πρόγραμμα για την επόμενη σας σπάσει το σημείο ή μέχρι την ολοκλήρωση εάν 178 00:08:55,640 --> 00:08:57,180 δεν υπάρχουν περισσότερα σημεία διάλειμμα. 179 00:08:57,180 --> 00:09:00,060 Απενεργοποίηση αφαιρεί τα σημεία διάλειμμα, αν αποφασίστηκε η διακοπή στα κυριότερα ήταν 180 00:09:00,060 --> 00:09:01,890 ακατάλληλη, θέλετε να που κάπου αλλού. 181 00:09:01,890 --> 00:09:05,090 Και, τέλος, q, σταματήσουν το κάπνισμα, ξεφεύγει από τον GDB. 182 00:09:05,090 --> 00:09:10,784 >> Έτσι, αυτό το πρόγραμμα,. / Καίσαρα, πρόκειται να δούμε μέσα από αυτή τη στιγμή και 183 00:09:10,784 --> 00:09:13,490 πρόκειται να χρησιμοποιήσετε για να βρείτε GDB τα σφάλματα σε αυτό το πρόγραμμα. 184 00:09:13,490 --> 00:09:18,110 Έτρεξα αυτό το πρόγραμμα νωρίτερα με Ελέγξτε 50, και πήρα ένα συνοφρύωμα. 185 00:09:18,110 --> 00:09:22,310 Τα πάντα υπήρχε, καταρτίζονται, το πέρασε πολλά από τα τεστ, αλλά για 186 00:09:22,310 --> 00:09:27,950 κάποιο λόγο, δεν περάσει το πέμπτο δοκιμή, μετατρέποντας BARFOO, όλα τα καλύμματα, σε 187 00:09:27,950 --> 00:09:33,350 E-D-U-Ι-Κ-Κ, όλα τα καπάκια, χρησιμοποιώντας τρία ως βασικός. 188 00:09:33,350 --> 00:09:34,090 Πήρα αρκετά κοντά. 189 00:09:34,090 --> 00:09:35,410 Πήρα εκτός από ένα γράμμα. 190 00:09:35,410 --> 00:09:37,340 Έτσι, υπάρχει κάποιο μικρό λάθος εδώ. 191 00:09:37,340 --> 00:09:38,070 Έχω κοίταξε μέσα από τον κωδικό μου. 192 00:09:38,070 --> 00:09:38,850 Δεν μπορούσα να το καταλάβω. 193 00:09:38,850 --> 00:09:41,740 Ας ελπίσουμε ότι, εσείς μπορεί να με βοηθήσει καταλάβω τι είναι αυτό το bug είναι. 194 00:09:41,740 --> 00:09:44,610 >> Έτσι, αυτό είναι το λάθος είμαστε αναζητάτε. 195 00:09:44,610 --> 00:09:46,090 Ας προχωρήσουμε σε GDB. 196 00:09:46,090 --> 00:09:51,100 Και πάλι, έχω τρέξει GDB. / Καίσαρα, έτσι και τώρα είμαστε στην GDB. 197 00:09:51,100 --> 00:09:54,290 Και ποια είναι η πρώτη πράγμα που πρέπει να κάνω; 198 00:09:54,290 --> 00:09:56,680 Έχω μόλις άρχισε GDB. 199 00:09:56,680 --> 00:10:00,316 Κάποιος να μου δώσει μια καλή εντολή για να εισέλθουν. 200 00:10:00,316 --> 00:10:01,140 >> ΦΟΙΤΗΤΗΣ: Διάλειμμα κύριο. 201 00:10:01,140 --> 00:10:01,800 >> JASON Hirschhorn: Διάλειμμα κύριο. 202 00:10:01,800 --> 00:10:02,900 Fantastic. 203 00:10:02,900 --> 00:10:03,560 Ας πληκτρολογήσουμε ότι μέσα 204 00:10:03,560 --> 00:10:06,390 Εσείς μπορείτε να παρακολουθήσετε εδώ ή ακολουθήστε μαζί στους υπολογιστές σας. 205 00:10:06,390 --> 00:10:09,410 Σπάστε κύρια, και θα δείτε ένα σημείο καμπής καθορίστηκε σε - 206 00:10:09,410 --> 00:10:12,340 αυτό μου δίνει κάποια περίεργα διεύθυνση μνήμης, και μου δίνει επίσης τον αριθμό της γραμμής. 207 00:10:12,340 --> 00:10:15,310 Εάν επρόκειτο να κοιτάξουμε πίσω σε αυτό το αρχείο, Θα ήθελα να συνειδητοποιήσουμε ότι η κύρια 208 00:10:15,310 --> 00:10:17,700 συνέβη στη γραμμή 21. 209 00:10:17,700 --> 00:10:18,950 Τι θα πρέπει να τρέξει το επόμενο βήμα; 210 00:10:18,950 --> 00:10:22,970 211 00:10:22,970 --> 00:10:25,060 Είναι το πρόγραμμα μου τρέχει; 212 00:10:25,060 --> 00:10:25,650 Όχι. 213 00:10:25,650 --> 00:10:27,175 Λοιπόν, τι θα πρέπει να τρέξει το επόμενο βήμα; 214 00:10:27,175 --> 00:10:27,520 >> ΣΠΟΥΔΑΣΤΩΝ: Τρέξτε. 215 00:10:27,520 --> 00:10:28,050 >> JASON Hirschhorn: Run. 216 00:10:28,050 --> 00:10:30,760 Θα πρέπει απλά να τρέχει τρέχει, ή θα πρέπει να Μπορώ να προσθέσω κάποια άλλα πράγματα μέσα; 217 00:10:30,760 --> 00:10:31,960 >> ΦΟΙΤΗΤΗΣ: Τρέξτε με το επιχείρημα. 218 00:10:31,960 --> 00:10:33,320 >> JASON Hirschhorn: Εκτέλεση με τα επιχειρήματα εντολή. 219 00:10:33,320 --> 00:10:36,420 Και επειδή είμαι debugging μια πολύ συγκεκριμένη περίπτωση, θα πρέπει να τεθεί η 220 00:10:36,420 --> 00:10:37,120 Το όρισμα της γραμμής εντολών. 221 00:10:37,120 --> 00:10:42,290 Γι 'αυτό θα τρέχουν τρεις, που είναι, και πάλι, η έξοδος πήρα από Έλεγχος 50. 222 00:10:42,290 --> 00:10:44,240 Έναρξη προγράμματος. 223 00:10:44,240 --> 00:10:45,420 Περνάμε μέσα από ένα ζευγάρι των γραμμών. 224 00:10:45,420 --> 00:10:47,700 Μπορείτε τώρα θα δείτε ότι είμαστε στη γραμμή 21. 225 00:10:47,700 --> 00:10:49,200 Πώς μπορώ να ξέρω ότι είμαστε στη γραμμή 21; 226 00:10:49,200 --> 00:10:52,170 Γιατί αν κοιτάξετε προς τα αριστερά από το παράθυρο τερματικού μου, εκεί 227 00:10:52,170 --> 00:10:53,120 λέει γραμμή 21. 228 00:10:53,120 --> 00:10:57,010 Και αυτό μου δίνει, στην πραγματικότητα, η κώδικα που είναι στη γραμμή 21. 229 00:10:57,010 --> 00:10:58,440 Γι 'αυτό και έκανε λάθος νωρίτερα. 230 00:10:58,440 --> 00:10:59,770 Κύριο δεν είναι στην πραγματικότητα στη γραμμή 21. 231 00:10:59,770 --> 00:11:02,000 Main είναι μια-δυο γραμμές πάνω από 21. 232 00:11:02,000 --> 00:11:04,300 Αλλά στη γραμμή 21, που είναι όπου είμαστε το σπάσιμο. 233 00:11:04,300 --> 00:11:06,280 Αυτή η γραμμή κώδικα έχει δεν έχει ακόμη εκτελεστεί. 234 00:11:06,280 --> 00:11:06,890 Αυτό είναι σημαντικό. 235 00:11:06,890 --> 00:11:09,120 Η γραμμή που βλέπετε δεν έχει έχει εκτελεστεί ακόμη. 236 00:11:09,120 --> 00:11:12,650 Αυτή είναι η επόμενη γραμμή κώδικα είστε έτοιμος να εκτελέσει. 237 00:11:12,650 --> 00:11:15,860 >> Έτσι, η επόμενη γραμμή, όπως εσείς είστε πιθανώς εξοικειωμένοι με, είναι αυτό 238 00:11:15,860 --> 00:11:20,070 προϋπόθεση έλεγχο για να δούμε αν έχω εισέλθει σε μια όρισμα γραμμής εντολών. 239 00:11:20,070 --> 00:11:22,140 Και για i, ποια είναι η δεύτερη μέρος ότι το να κάνουμε; 240 00:11:22,140 --> 00:11:23,457 Τι είναι σε θ? 241 00:11:23,457 --> 00:11:24,950 >> ΣΠΟΥΔΑΣΤΩΝ: Η αλλαγή είναι σε ακέραιο. 242 00:11:24,950 --> 00:11:25,450 >> JASON Hirschhorn: Συγγνώμη; 243 00:11:25,450 --> 00:11:27,400 >> ΦΟΙΤΗΤΗΣ: Είναι η αλλαγή της επιχείρημα σε ακέραιο. 244 00:11:27,400 --> 00:11:30,890 >> JASON Hirschhorn: Έτσι, ένα για i αλλάζει arg v1 από ένα string σε ακέραιο. 245 00:11:30,890 --> 00:11:32,140 Και τότε τι είναι αυτό που τον έλεγχο; 246 00:11:32,140 --> 00:11:35,414 247 00:11:35,414 --> 00:11:37,112 >> ΦΟΙΤΗΤΗΣ: Αν υπάρχει ένα δεύτερο όρισμα της γραμμής εντολών, εκτός 248 00:11:37,112 --> 00:11:38,100 από την εκτέλεση του προγράμματος. 249 00:11:38,100 --> 00:11:39,460 >> JASON Hirschhorn: Και τι είναι το δεύτερο ήμισυ του εν λόγω 250 00:11:39,460 --> 00:11:41,220 Έλεγχο Boolean έκφραση; 251 00:11:41,220 --> 00:11:42,540 Αυτό το μέρος εδώ, το να θ? 252 00:11:42,540 --> 00:11:44,080 >> ΦΟΙΤΗΤΗΣ: Αν είναι αρνητική. 253 00:11:44,080 --> 00:11:45,380 >> JASON Hirschhorn: Αφού βεβαιωθείτε τι; 254 00:11:45,380 --> 00:11:47,120 >> ΦΟΙΤΗΤΗΣ: Αφού βεβαιωθείτε ότι είναι, στην πραγματικότητα, θετική. 255 00:11:47,120 --> 00:11:47,650 >> JASON Hirschhorn: Ακριβώς. 256 00:11:47,650 --> 00:11:50,600 Αυτό έλεγχο για να δούμε αν είναι αρνητικά, και εάν είναι αρνητική, Ι 257 00:11:50,600 --> 00:11:53,220 έχουν μια αίσθηση της επόμενης γραμμής θα μπορούσε να μου φωνάζει στο χρήστη. 258 00:11:53,220 --> 00:11:55,930 Έτσι, ας χτυπήσει τέλος να εκτελέσει αυτή τη γραμμή. 259 00:11:55,930 --> 00:11:59,925 Δεν βλέπουμε ότι η γραμμή την οποία εσείς ίσως περίμενε να δει να φωνάζει κατά τη 260 00:11:59,925 --> 00:12:03,030 του χρήστη και στη συνέχεια επιστρέφει, διότι αυτή η γραμμή δεν εκτελέσει. 261 00:12:03,030 --> 00:12:03,840 Μπήκα 3. 262 00:12:03,840 --> 00:12:06,860 Έτσι έκανα, στην πραγματικότητα, εισάγετε τις δύο εντολών τα επιχειρήματα της γραμμής, και 3 είναι 263 00:12:06,860 --> 00:12:07,610 μεγαλύτερη από το μηδέν. 264 00:12:07,610 --> 00:12:09,950 Έτσι είδαμε αυτή τη γραμμή, έχουμε εκτελούνται, αλλά δεν είχαμε βήμα 265 00:12:09,950 --> 00:12:11,300 μέσα στο αν η κατάσταση. 266 00:12:11,300 --> 00:12:17,060 >> Έτσι τώρα, το επόμενο, βλέπω Στήνω κλειδί int να ισούται με ένα i arg v1. 267 00:12:17,060 --> 00:12:18,840 Έτσι ώστε να είναι με τη δημιουργία μιας μεταβλητής κλειδί. 268 00:12:18,840 --> 00:12:22,450 Έτσι, αν μπορώ να εκτυπώσετε το κλειδί τώρα, γιατί που σας επιτρέπει να δείτε την 269 00:12:22,450 --> 00:12:26,040 αξία στο εσωτερικό της μεταβλητής, κλειδί ισούται με 47. 270 00:12:26,040 --> 00:12:28,810 Αυτό είναι παράξενο, αλλά, βεβαίως, αυτό γιατί δεν έχω 271 00:12:28,810 --> 00:12:30,490 εκτέλεσε τη γραμμή ακόμα. 272 00:12:30,490 --> 00:12:35,880 Έτσι τώρα, αν χτύπησα n, εκτελούν αυτή τη γραμμή, και να κάνουμε το κλειδί εκτύπωσης, το κλειδί θα είναι ίσο με 3, 273 00:12:35,880 --> 00:12:37,740 το οποίο είναι αυτό που περιμένουμε να είναι ίσο. 274 00:12:37,740 --> 00:12:41,170 >> Έτσι και πάλι, στην GDB, τη γραμμή που δείτε δεν έχετε ακόμη εκτελεστεί. 275 00:12:41,170 --> 00:12:44,850 Θα πρέπει να χτυπήσει n ή s ή έναν αριθμό από άλλες εντολές πραγματικά 276 00:12:44,850 --> 00:12:46,610 εκτελέσει αυτή τη γραμμή. 277 00:12:46,610 --> 00:12:47,380 Πλήκτρο Print. 278 00:12:47,380 --> 00:12:48,280 Βασικά κατά 3. 279 00:12:48,280 --> 00:12:49,750 Μέχρι στιγμής, όλα καλά. 280 00:12:49,750 --> 00:12:51,000 String είναι απλό κείμενο. 281 00:12:51,000 --> 00:12:52,270 Ας εκτελέσει αυτή τη γραμμή. 282 00:12:52,270 --> 00:12:53,970 Παίρνω ένα string από τον χρήστη. 283 00:12:53,970 --> 00:12:58,690 >> Ας δούμε Έλεγχος 50 μου, έχω εισάγετε BARFOO όλα τα καλύμματα, έτσι 284 00:12:58,690 --> 00:13:01,330 αυτό είναι που θα μπω. 285 00:13:01,330 --> 00:13:07,300 Αν τώρα εκτυπώσει απλό κείμενο. 286 00:13:07,300 --> 00:13:08,610 Θα δείτε ότι ισούται με ένα string. 287 00:13:08,610 --> 00:13:11,100 Μου δίνει κάποια άλλα παράξενα δεκαεξαδικό αριθμός, αλλά το κάνει σε 288 00:13:11,100 --> 00:13:13,620 να πούμε ότι η σειρά μου BARFOO. 289 00:13:13,620 --> 00:13:19,308 Αν ήθελα να δω τι κλειδί ισοφάρισε σε αυτό το σημείο, πώς θα μπορούσα να ελέγξω το κλειδί; 290 00:13:19,308 --> 00:13:20,710 >> ΦΟΙΤΗΤΗΣ: πλήκτρο Print. 291 00:13:20,710 --> 00:13:22,010 >> JASON Hirschhorn: πλήκτρο Print, ακριβώς. 292 00:13:22,010 --> 00:13:23,260 Και στην πραγματικότητα, υπάρχει μια συντόμευση. 293 00:13:23,260 --> 00:13:25,910 Αν έχετε κουραστεί από την πληκτρολόγηση εκτύπωσης, μπορείτε απλά να πληκτρολογήσετε p. 294 00:13:25,910 --> 00:13:28,340 Έτσι πλήκτρο p κάνει ακριβώς το ίδιο πράγμα. 295 00:13:28,340 --> 00:13:29,730 Και πάλι, βλέπω ότι ισούται με 3. 296 00:13:29,730 --> 00:13:34,760 >> Αν ήθελα να μάθετε τι δύο βασικά και BARFOO ισοφάρισε ταυτόχρονα 297 00:13:34,760 --> 00:13:37,215 αλλά ήμουν κουρασμένος από την πληκτρολόγηση κάθε ένας ξεχωριστά, I 298 00:13:37,215 --> 00:13:38,590 θα μπορούσε να πληκτρολογήσετε πληροφορίες ντόπιους. 299 00:13:38,590 --> 00:13:41,170 Αυτό μου δίνει το κλειδί ίσων 3. 300 00:13:41,170 --> 00:13:42,500 Απλό κείμενο ισούται BARFOO. 301 00:13:42,500 --> 00:13:45,265 Μου δίνεται επίσης αυτά τα δύο περίεργα πράγματα στην κορυφή, αυτή η μεταβλητή i και 302 00:13:45,265 --> 00:13:46,590 αυτή η μεταβλητή n. 303 00:13:46,590 --> 00:13:48,460 >> Αυτά είναι υπαρκτού το κυριότερο πρόγραμμα μου. 304 00:13:48,460 --> 00:13:51,280 Εμείς δεν έχετε τους αντιμετωπίζουν ακόμα, αλλά ως μια προεπισκόπηση, εκείνες 305 00:13:51,280 --> 00:13:52,880 υπάρχουν κατά τη γνώμη μου για το βρόχο. 306 00:13:52,880 --> 00:13:55,360 Έτσι, αυτή τη στιγμή, που ισούται με κάποιο περίεργο αριθμούς, επειδή δεν έχουν 307 00:13:55,360 --> 00:13:58,300 προετοιμαστεί ακόμα, αλλά δεν υπάρχουν ακόμα στη μνήμη, έτσι είναι ακριβώς που 308 00:13:58,300 --> 00:14:00,220 σε κάποια τιμή σκουπίδια. 309 00:14:00,220 --> 00:14:02,890 Αλλά μπορούμε να δούμε το κλειδί στην πεδιάδα κείμενο εκεί. 310 00:14:02,890 --> 00:14:06,390 >> Έτσι, Πάω να εκτελέσει αυτή τη γραμμή, γραμμή 34, ο βρόχος. 311 00:14:06,390 --> 00:14:08,220 Εμείς πάμε για να πηδήξουν το για loop πατώντας n. 312 00:14:08,220 --> 00:14:10,050 Και είμαστε μέσα στο for loop. 313 00:14:10,050 --> 00:14:11,360 Είμαστε στο πρώτο μας έλεγχο. 314 00:14:11,360 --> 00:14:14,300 Και πάλι, αυτές θα πρέπει να εξετάσουμε το είδος των γνωστά σε σας, επειδή αυτό ήταν ένα 315 00:14:14,300 --> 00:14:18,080 Πρόγραμμα Καίσαρα που γράφτηκε, αλλά πάλι, έχει κάποια bug. 316 00:14:18,080 --> 00:14:21,940 >> Και τώρα αν κάνω πληροφορίες ντόπιοι, επειδή είμαι μέσα σε αυτό για βρόχο, θα δείτε 317 00:14:21,940 --> 00:14:23,900 ότι i ισούται με μηδέν, όπως περιμένουμε. 318 00:14:23,900 --> 00:14:26,820 Αυτό είναι αυτό που έθεσε και να προετοιμαστεί είναι στο βρόχο for. 319 00:14:26,820 --> 00:14:27,560 η ισούται 6. 320 00:14:27,560 --> 00:14:30,700 Αυτό επίσης λογικό, διότι θέτουμε να το strlen του απλού κειμένου. 321 00:14:30,700 --> 00:14:34,270 Έτσι μου αρέσει να κάνω πληροφορίες ντόπιους ή να εκτυπώσετε σε μια μεταβλητή συχνά για να βεβαιωθείτε ότι 322 00:14:34,270 --> 00:14:36,370 όλα είναι πάντα ό, τι Περιμένω να είναι ίσο. 323 00:14:36,370 --> 00:14:39,800 Στην περίπτωση αυτή, τα πάντα είναι αυτό που περιμένω να είναι ίσο. 324 00:14:39,800 --> 00:14:41,850 >> Οπότε ας αρχίσουμε να κινούμαστε μέσα αυτό για το βρόχο. 325 00:14:41,850 --> 00:14:45,715 Η γραμμή Είμαι είναι η γραμμή 36, αν απλά i κειμένου είναι μεγαλύτερη από ό, τι ένα απλό και 326 00:14:45,715 --> 00:14:48,540 i κειμένου είναι μικρότερη ή ίση με το z. 327 00:14:48,540 --> 00:14:51,880 Ξέρω το πρόβλημά μου δεν είναι με την πρώτη μου e-mail, είναι με το δεύτερο γράμμα. 328 00:14:51,880 --> 00:14:56,290 Αν κοιτάξουμε πίσω στο Έλεγχος 50, Β πηγαίνει στην Ε πρόστιμο. 329 00:14:56,290 --> 00:14:59,010 Παίρνω το Α και αφήνοντας ως Α, δεν το αλλάζει με τον D. Έτσι, 330 00:14:59,010 --> 00:15:00,200 κάτι δεν πάει καλά με η δεύτερη επιστολή. 331 00:15:00,200 --> 00:15:01,640 Έτσι, Πάω να κινηθεί εκεί σε ένα δευτερόλεπτο. 332 00:15:01,640 --> 00:15:06,030 >> Αλλά αν δεν θέλετε να ελέγξετε τι κάμπο κείμενο που ισοφάρισε στο συγκεκριμένο 333 00:15:06,030 --> 00:15:07,760 περίπτωση, νομίζω ότι πρέπει να είναι αυτό; 334 00:15:07,760 --> 00:15:10,980 Τι θα πρέπει να απλό κείμενο που ισοδυναμούσε αυτό πρώτο γύρο με το βρόχο for; 335 00:15:10,980 --> 00:15:14,046 336 00:15:14,046 --> 00:15:15,110 >> ΦΟΙΤΗΤΗΣ: Μηδέν; 337 00:15:15,110 --> 00:15:16,510 >> JASON Hirschhorn: Απλό κείμενο του εγώ; 338 00:15:16,510 --> 00:15:21,180 Γι 'αυτό πρέπει να είναι κεφάλαιο Β. Εγώ, βέβαια, ισούται με μηδέν, αλλά απλό κείμενο 339 00:15:21,180 --> 00:15:25,600 βραχίονα μηδέν κλειστό βραχίονα ισούται με B γιατί χορδές, όπως είδαμε την περασμένη εβδομάδα, 340 00:15:25,600 --> 00:15:28,650 είναι array, οπότε παίρνουμε το πρώτο χαρακτήρα από αυτό. 341 00:15:28,650 --> 00:15:34,960 Έτσι και πάλι, αν εκτυπωθεί απλό κείμενο Εγώ, εγώ, στην πραγματικότητα, να πάρει τον χαρακτήρα 342 00:15:34,960 --> 00:15:36,560 Β. Και αυτό είναι τακτοποιημένο, έτσι δεν είναι; 343 00:15:36,560 --> 00:15:40,380 Δεν έχω πραγματικά απλό κείμενο I. Αυτό δεν είναι μία από τις μεταβλητές που καθορίζονται 344 00:15:40,380 --> 00:15:42,950 ή προετοιμασία του, αλλά μπορείτε να εκτυπώσετε από μια ολόκληρη σειρά από πράγματα 345 00:15:42,950 --> 00:15:45,640 αν θέλετε να. 346 00:15:45,640 --> 00:15:47,340 >> Αλλά ας προχωρήσουμε μέσα. 347 00:15:47,340 --> 00:15:50,050 Αν απλού κειμένου που είναι μεγαλύτερη από Α και απλό κείμενο Ι είναι μικρότερο ή ίσο προς 348 00:15:50,050 --> 00:15:53,290 Z, που σαφώς είναι αλήθεια, διότι έχουμε ένα κεφάλαιο Β. Πάω να τρέξει 349 00:15:53,290 --> 00:15:54,230 κάποια εντολή σε αυτό. 350 00:15:54,230 --> 00:15:58,530 Είδαμε ότι τα μαθηματικά την περασμένη εβδομάδα, οπότε θα θεωρούμε δεδομένο ότι λειτουργεί 351 00:15:58,530 --> 00:16:00,900 δικαίωμα σύμφωνα με το Έλεγχος 50. 352 00:16:00,900 --> 00:16:03,720 >> Αυτά τα άγκιστρα, ο πρώτος έδειξε ότι ήμουν την έξοδο από το αν 353 00:16:03,720 --> 00:16:07,030 κατάσταση, ο δεύτερος έδειξε ότι είμαι έξοδο από το βρόχο for. 354 00:16:07,030 --> 00:16:10,400 Και έτσι τώρα όταν χτύπησα Στη συνέχεια, θα δούμε είμαστε πίσω στο βρόχο for και πάλι. 355 00:16:10,400 --> 00:16:11,970 Θα πάμε μέσα από το για την εκ νέου βρόχου. 356 00:16:11,970 --> 00:16:18,110 Ας πραγματικά βήμα προς το δεύτερο επανάληψη του βρόχου και το είδος 357 00:16:18,110 --> 00:16:20,520 info ντόπιους. 358 00:16:20,520 --> 00:16:22,190 >> Έτσι, είμαστε στην δεύτερη επανάληψη του βρόχου για μας. 359 00:16:22,190 --> 00:16:24,530 I ισούται με 1, η οποία αναμένουμε. 360 00:16:24,530 --> 00:16:26,650 Ν ισούται με 6, το οποίο περιμένουμε. 361 00:16:26,650 --> 00:16:28,810 Βασικά ισούται με 3, το οποίο περιμένουμε. 362 00:16:28,810 --> 00:16:32,625 Και απλό κείμενο, θα δείτε, ισούται EARFOO τώρα, όχι πια γιατί BARFOO 363 00:16:32,625 --> 00:16:37,930 στο προηγούμενο επανάληψη μας, ο Β ήταν άλλαξε σε ένα κεφάλαιο Ε. Έτσι είμαστε έτοιμοι 364 00:16:37,930 --> 00:16:40,040 να αντιμετωπίσει το πρόβλημα, οπότε αυτό Εκεί θα πάμε να 365 00:16:40,040 --> 00:16:41,130 βουτήξει στο debugging. 366 00:16:41,130 --> 00:16:43,365 Αλλά κανείς δεν έχει απορίες σχετικά με το τι έχουμε κάνει μέχρι τώρα; 367 00:16:43,365 --> 00:16:46,770 368 00:16:46,770 --> 00:16:47,910 Fantastic. 369 00:16:47,910 --> 00:16:52,710 >> Έτσι είμαστε έτοιμοι να εκτελέσουν αυτό, αν κατάσταση, απλό βραχίονα κείμενο που έκλεισε 370 00:16:52,710 --> 00:16:57,500 βραχίονα μεγαλύτερο από ένα και απλό κείμενο που μικρότερη ή ίση με Ζ. Αλλά πριν 371 00:16:57,500 --> 00:17:00,450 Μπω σε αυτό, επειδή αυτό είναι όπου Ξέρω ότι είναι λάθος μου, θέλω να επισημάνω 372 00:17:00,450 --> 00:17:06,859 από απλό κείμενο του Ι. Έτσι, ας βάλουμε εκτύπωση. 373 00:17:06,859 --> 00:17:12,020 Κάνει ισούται με το χαρακτήρα A, έτσι ώστε να φαίνεται μέχρι στιγμής, όλα είναι ωραία και καλά. 374 00:17:12,020 --> 00:17:14,740 >> Γι 'αυτό και περιμένουμε αυτή τη γραμμή ανά τη λογική μου, η γραμμή αυτή θα πρέπει να είναι αλήθεια. 375 00:17:14,740 --> 00:17:16,099 Είναι ένα κεφαλαίο γράμμα. 376 00:17:16,099 --> 00:17:20,599 Αλλά αν χτύπησα n, συνειδητοποιούμε ότι αυτή η γραμμή, στην πραγματικότητα, δεν εκτελέσει. 377 00:17:20,599 --> 00:17:22,609 Πήδηξα προς τα κάτω στο άλλο, εάν. 378 00:17:22,609 --> 00:17:25,460 Γιατί συνέβη αυτό; 379 00:17:25,460 --> 00:17:27,480 >> ΦΟΙΤΗΤΗΣ: Επειδή έχετε την κατάστασή σας απλού κειμένου είναι μεγαλύτερη 380 00:17:27,480 --> 00:17:29,130 από Α, δεν είναι ίση ή μεγαλύτερη από ό, τι. 381 00:17:29,130 --> 00:17:32,260 >> JASON Hirschhorn: Έτσι είχα απλού κειμένου μου Ι είναι μεγαλύτερη από μία, όχι μεγαλύτερο 382 00:17:32,260 --> 00:17:32,850 από ή ίσο με. 383 00:17:32,850 --> 00:17:38,130 Έτσι, σαφώς, το κεφάλαιο Α δεν έκανε ενεργοποιούν αυτό αν η κατάσταση, και το κάναμε 384 00:17:38,130 --> 00:17:40,520 Δεν το βήμα σε αυτό, και το κάναμε δεν κάνει την απαραίτητη στροφή. 385 00:17:40,520 --> 00:17:41,360 Έτσι, αυτό είναι, στην πραγματικότητα. 386 00:17:41,360 --> 00:17:42,920 Κατάλαβα bug μου. 387 00:17:42,920 --> 00:17:46,775 Θα μπορούσα να πάω πίσω στο αρχείο προέλευσης μου, αλλάξετε, και να ενημερώνει και 388 00:17:46,775 --> 00:17:47,855 Ελέγξτε τρέξει 50 και πάλι. 389 00:17:47,855 --> 00:17:52,590 >> Αλλά θα δούμε, μόνο για την παιδαγωγική του χάρη, αν συνεχίζω. 390 00:17:52,590 --> 00:17:59,580 Το άλλο, αν δεν εκτελεί ούτε, αλλά τι αντί ισούται είναι η εντολή 391 00:17:59,580 --> 00:18:00,500 αυτό δεν αλλάζει. 392 00:18:00,500 --> 00:18:04,840 Γι 'αυτό δεν έχει αλλάξει καθόλου, και αν εκτυπώσει απλό κείμενο εδώ, θα δούμε θα 393 00:18:04,840 --> 00:18:08,250 μέσα από αυτό για το βρόχο δεν το έκανε, στην πραγματικότητα, αλλάξει αυτό το δεύτερο χαρακτήρα σε όλα. 394 00:18:08,250 --> 00:18:09,600 Είναι ακόμα ένα κεφάλαιο Α. 395 00:18:09,600 --> 00:18:12,690 >> Έτσι και πάλι, εμείς λάθη λάθος μας. 396 00:18:12,690 --> 00:18:17,380 Συνειδητοποιήσαμε ότι υπήρχε κάποια λογική λείπει. 397 00:18:17,380 --> 00:18:20,590 Και το debugged μπροστά από την εποχή πριν από την στην πραγματικότητα εκτελεί αυτή τη γραμμή, 398 00:18:20,590 --> 00:18:24,320 αλλά θα έχετε παρατηρήσει αν είχαμε μόνο χτύπησε στο Επόμενο και μεταβείτε σε αυτό το άλλο αν, 399 00:18:24,320 --> 00:18:26,710 Αυτό σημαίνει ότι αν η κατάσταση Δεν ήταν αλήθεια. 400 00:18:26,710 --> 00:18:29,550 Εμείς δεν είχε, στην πραγματικότητα, να πάρει το αποτέλεσμα που περιμέναμε. 401 00:18:29,550 --> 00:18:33,240 Έτσι, τότε θα μπορούσε να είχε ζητηθεί, είχε δεν ήταν τόσο έξυπνη, για να δούμε 402 00:18:33,240 --> 00:18:38,510 ότι αν η κατάσταση και να ελέγξει αν, στην πραγματικότητα, κατάστασή μας θα πρέπει να αξιολογήσει σε 403 00:18:38,510 --> 00:18:41,150 αλήθεια στο σημερινό πλαίσιο. 404 00:18:41,150 --> 00:18:42,880 >> Αυτό είναι όλο για τον εντοπισμό σφαλμάτων σε αυτό το πρόγραμμα. 405 00:18:42,880 --> 00:18:45,340 Μήπως κάποιος έχει απορίες; 406 00:18:45,340 --> 00:18:50,486 Ποια εντολή θα μπορούσε χτύπησα να σταματήσουν GDB; 407 00:18:50,486 --> 00:18:53,900 Ερ: Και τότε θα σας ζητηθεί, εγκαταλείψει ούτως ή άλλως; 408 00:18:53,900 --> 00:18:54,390 Ναι ή όχι. 409 00:18:54,390 --> 00:18:58,440 Θα χτυπήσει ναι, και εγώ θα έχουν εγκαταλείψει GDB. 410 00:18:58,440 --> 00:19:00,860 >> Έτσι, αυτό ήταν μια γρήγορη αλφαβητάρι για GDB. 411 00:19:00,860 --> 00:19:03,430 Στην πραγματικότητα, σε ένα πραγματικό σενάριο, Το έκανα αυτό σε ώρες γραφείου. 412 00:19:03,430 --> 00:19:06,710 I GDBed αυτό το ακριβές πρόγραμμα σε ώρες γραφείου με έναν μαθητή. 413 00:19:06,710 --> 00:19:12,410 Και αν πάμε πίσω στις εντολές που είδαμε πριν, χρησιμοποιήσαμε διάλειμμα κύρια, πρώτη 414 00:19:12,410 --> 00:19:13,190 πράγμα που κάναμε. 415 00:19:13,190 --> 00:19:16,060 Χρησιμοποιήσαμε τρέχει με τα επιχειρήματα της γραμμής εντολών, δεύτερο πράγμα που κάναμε. 416 00:19:16,060 --> 00:19:18,520 Χρησιμοποιήσαμε το επόμενο πολλά να κινηθεί μας μέσω των γραμμών. 417 00:19:18,520 --> 00:19:20,310 Και πάλι, η σύντομη εκδοχή του είναι το επόμενο n. 418 00:19:20,310 --> 00:19:22,920 Αυτό είναι στις παρενθέσεις σε γκρι χρώμα στη διαφάνεια. 419 00:19:22,920 --> 00:19:28,590 >> Εμείς δεν χρησιμοποίησε το βήμα, αλλά δεν το κάναμε απαραιτήτως να για την περίπτωση αυτή. 420 00:19:28,590 --> 00:19:32,150 Αλλά θα μπορούσαμε να το χρησιμοποιήσετε σε ένα λίγο αργότερα σήμερα, αν είμαστε εντοπισμού σφαλμάτων, για 421 00:19:32,150 --> 00:19:36,500 παράδειγμα, δυαδική αναζήτηση, όταν δυαδικό αναζήτηση καλείται σε ένα ξεχωριστό 422 00:19:36,500 --> 00:19:38,200 λειτουργία, αλλά υπάρχει κάποιο λάθος με αυτό. 423 00:19:38,200 --> 00:19:40,440 Εμείς πάμε να θέλετε να μπείτε η κλήση σε δυαδική αναζήτηση και 424 00:19:40,440 --> 00:19:41,840 πραγματικά να διορθώσετε αυτό. 425 00:19:41,840 --> 00:19:45,130 Λίστα εμείς δεν χρησιμοποιούν είτε επειδή είχαμε μια καλή αίσθηση του κώδικά μας, αλλά αν 426 00:19:45,130 --> 00:19:48,420 δεν θέλετε να πάρετε μια αίσθηση του τι κωδικού ήταν περίπου, θα μπορούσα απλά να χρησιμοποιήσετε λίστα. 427 00:19:48,420 --> 00:19:50,310 >> Εκτυπώστε χρησιμοποιήσαμε, πληροφορίες ντόπιοι που χρησιμοποιούνται. 428 00:19:50,310 --> 00:19:53,260 Συνέχεια εμείς δεν πρέπει να χρησιμοποιήσετε αυτό το περίπτωση, ούτε κάναμε πρέπει να χρησιμοποιήσετε 429 00:19:53,260 --> 00:19:55,060 απενεργοποιήσετε, αλλά κάναμε χρήση σταματήσουν το κάπνισμα. 430 00:19:55,060 --> 00:19:57,850 Και πάλι, αυτές οι 10 εντολές, τους πρακτική. 431 00:19:57,850 --> 00:20:00,770 Αν καταλαβαίνετε αυτές τις 10 εντολές, θα πρέπει να καθοριστούν για τον εντοπισμό σφαλμάτων κάθε 432 00:20:00,770 --> 00:20:02,525 εκδώσουμε GDB. 433 00:20:02,525 --> 00:20:05,230 434 00:20:05,230 --> 00:20:08,420 >> Έτσι είμαστε έτοιμοι να πάμε σε, και πάλι, με την ουσία του τμήματος σήμερα, που πηγαίνει πέρα ​​από 435 00:20:08,420 --> 00:20:09,720 αυτές η ταξινόμηση και αναζήτηση αλγορίθμων. 436 00:20:09,720 --> 00:20:14,075 Πριν το κάνουμε αυτό, και πάλι, οποιεσδήποτε ερωτήσεις, σχόλια, τις ανησυχίες για την GDB; 437 00:20:14,075 --> 00:20:16,750 438 00:20:16,750 --> 00:20:20,960 Έτσι είναι όλοι πρόκειται να χρησιμοποιήσει GDB παρά printf; 439 00:20:20,960 --> 00:20:24,550 Έτσι, ο καθένας, για χάρη του διηνεκές, όλοι κουνώντας το κεφάλι τους το δικαίωμα 440 00:20:24,550 --> 00:20:27,400 τώρα, γι 'αυτό θα σας δούμε σε ώρες γραφείου και όλα τα TFs θα σας και να δείτε 441 00:20:27,400 --> 00:20:29,460 θα πουν, να μου δείξει πώς να χρησιμοποιούν GDB, και θα είστε σε θέση 442 00:20:29,460 --> 00:20:31,240 να τους δείξουμε, έτσι δεν είναι; 443 00:20:31,240 --> 00:20:31,760 Το είδος του; 444 00:20:31,760 --> 00:20:32,640 Ίσως ελπίζουμε. 445 00:20:32,640 --> 00:20:33,670 Cool. 446 00:20:33,670 --> 00:20:35,790 >> Έτσι θα πάμε για να προχωρήσουμε σε ταξινόμησης και αναζήτησης. 447 00:20:35,790 --> 00:20:40,710 Θα δείτε έχω μια λίστα που ήδη ταξινόμηση για μας, αλλά ότι δεν πρόκειται 448 00:20:40,710 --> 00:20:42,220 να είναι η περίπτωση πάντα. 449 00:20:42,220 --> 00:20:49,170 Έτσι, το πρόβλημα που προδιαγραφές πρόβλημα που τρεις, έχετε σορτς 450 00:20:49,170 --> 00:20:51,410 ότι μπορείτε να παρακολουθήσετε, και στην πραγματικότητα σας ζητά να παρακολουθήσουν αυτά τα σορτς. 451 00:20:51,410 --> 00:20:55,090 Επίσης, σε διάλεξη την περασμένη εβδομάδα, πήγαμε πάνω πολλοί από αυτούς τους αλγορίθμους, έτσι είμαι 452 00:20:55,090 --> 00:20:59,150 δεν πρόκειται να περνούν το χρόνο τους στην τάξη θα πάνω από αυτούς τους αλγόριθμους και πάλι ή σχέδιο 453 00:20:59,150 --> 00:21:01,130 εικόνες για το πώς αυτά τα αλγόριθμοι λειτουργούν. 454 00:21:01,130 --> 00:21:04,030 Και πάλι, οι πληροφορίες αυτές μπορείτε να επαν-watch διάλεξη, ή ότι οι πληροφορίες 455 00:21:04,030 --> 00:21:08,570 συλλαμβάνεται εξαιρετικά στις σορτς για αυτές τις αναζητήσεις, όλοι 456 00:21:08,570 --> 00:21:10,920 τα οποία είναι διαθέσιμα στο cs50.net. 457 00:21:10,920 --> 00:21:14,200 >> Έτσι, αντ 'αυτού, τι θα πάμε να κάνετε είναι να γράψετε αυτά τα προγράμματα. 458 00:21:14,200 --> 00:21:18,190 Έχουμε την αίσθηση, ένα νοητικό μοντέλο, πώς εργάζονται, και έτσι αυτό που θα πάμε 459 00:21:18,190 --> 00:21:20,210 να κάνουμε είναι να κωδικοποιήσει τα αληθινά. 460 00:21:20,210 --> 00:21:23,430 Εμείς πάμε για να μετατρέψει το νοητικό μοντέλο, ότι η εικόνα, αν θέλετε, σε ο 461 00:21:23,430 --> 00:21:24,960 πραγματικό κώδικα. 462 00:21:24,960 --> 00:21:28,460 Και αν ήταν μια μικρή σύγχυση ή θολό σχετικά με το νοητικό μοντέλο, Είμαι απόλυτα 463 00:21:28,460 --> 00:21:28,770 καταλαβαίνουν. 464 00:21:28,770 --> 00:21:30,540 >> Δεν είμαστε πραγματικά πρόκειται να άλμα στον κώδικα αμέσως. 465 00:21:30,540 --> 00:21:36,030 Έτσι, ενώ αυτό το μήνυμα σε αυτή τη διαφάνεια ζητά να κωδικοποιήσει δυαδική αναζήτηση, και 466 00:21:36,030 --> 00:21:39,470 στην πραγματικότητα, μια επαναληπτική εκδοχή δυαδική αναζήτηση, το πρώτο πράγμα που 467 00:21:39,470 --> 00:21:42,370 πραγματικά θέλετε να κάνετε είναι να γράψετε κάποιο ψευδοκώδικα. 468 00:21:42,370 --> 00:21:47,020 Έτσι, έχετε αυτό το νοητικό μοντέλο πώς λειτουργεί δυαδικά αναζήτησης. 469 00:21:47,020 --> 00:21:50,060 Πάρτε ένα φύλλο χαρτί, αν έχετε μια άμεσα διαθέσιμη, ή να ανοίξει ένα 470 00:21:50,060 --> 00:21:52,520 επεξεργαστή κειμένου, και θα ήθελα ο καθένας να γράψει. 471 00:21:52,520 --> 00:21:57,470 Πάρτε τέσσερα λεπτά για να γράψει το pseudocode για δυαδική αναζήτηση. 472 00:21:57,470 --> 00:21:58,990 >> Πάλι, σκεφτείτε για αυτό το νοητικό μοντέλο. 473 00:21:58,990 --> 00:22:01,980 Θα έρθει γύρω, αν έχετε ερωτήσεις και μπορούμε να εξάγουμε την εικόνα έξω. 474 00:22:01,980 --> 00:22:06,220 Αλλά πρώτα, πριν ξεκινήσουμε τον προγραμματισμό, Θα ήθελα να γράψω το 475 00:22:06,220 --> 00:22:09,920 pseudocode για δυαδική αναζήτηση έτσι ώστε όταν θα βουτήξει μέσα, έχουμε κάποια κατεύθυνση, όπως 476 00:22:09,920 --> 00:22:12,110 όπου θα πρέπει να το κεφάλι. 477 00:22:12,110 --> 00:22:15,330 >> ΦΟΙΤΗΤΗΣ: Μπορούμε να υποθέσουμε την σειρά τιμές που παίρνουμε είναι ήδη ταξινομημένο; 478 00:22:15,330 --> 00:22:17,960 >> JASON Hirschhorn: Έτσι, για δυαδική αναζήτηση να εργαστούν - εξαιρετική ερώτηση - θα 479 00:22:17,960 --> 00:22:20,970 πρέπει να ληφθούν σε ταξινομημένη πίνακα τιμών. 480 00:22:20,970 --> 00:22:22,290 Έτσι υποθέσουμε ότι θα λειτουργήσει. 481 00:22:22,290 --> 00:22:23,480 Θα πάμε πίσω σε αυτή τη διαφάνεια. 482 00:22:23,480 --> 00:22:27,220 Θα δείτε σε μωβ λειτουργία δήλωση είναι bool binary_search int 483 00:22:27,220 --> 00:22:29,230 αξία, int τιμές, int n. 484 00:22:29,230 --> 00:22:32,910 Αυτό θα φανεί γνωστή, αν έχετε ήδη προσεγγίσει ή να πάρει σας 485 00:22:32,910 --> 00:22:34,580 τα χέρια βρώμικα με το σύνολο του προβλήματος. 486 00:22:34,580 --> 00:22:35,910 >> Αλλά αυτό είναι δήλωση της συνάρτησης σας. 487 00:22:35,910 --> 00:22:39,080 Και πάλι, δεν χρειάζεται να ανησυχείτε για ότι ένα μεγάλο μέρος αυτή τη στιγμή. 488 00:22:39,080 --> 00:22:43,660 Αυτό που θέλω πραγματικά να κάνετε είναι να πάρετε τέσσερα λεπτά για να ψευδοκώδικα δυαδικό 489 00:22:43,660 --> 00:22:46,380 αναζήτηση, και στη συνέχεια θα πάμε πάνω από ότι ως ομάδα. 490 00:22:46,380 --> 00:22:47,500 Και θα έρθει γύρω. 491 00:22:47,500 --> 00:22:49,590 Εάν έχετε απορίες, μπορείτε χωρίς να σηκώσεις το χέρι σου. 492 00:22:49,590 --> 00:25:07,110 493 00:25:07,110 --> 00:25:09,680 >> Γιατί δεν παίρνετε δύο λεπτά να ολοκληρωθεί μέχρι το ψευδοκώδικα; 494 00:25:09,680 --> 00:25:13,690 495 00:25:13,690 --> 00:25:15,820 Ξέρω ότι αυτό μπορεί να φαίνεται γελοίο το γεγονός ότι ξοδεύουμε τόσο πολύ χρόνο για 496 00:25:15,820 --> 00:25:20,350 κάτι που δεν είναι ακόμα πραγματικότητα σε C, αλλά ειδικά για αυτούς, περισσότεροι 497 00:25:20,350 --> 00:25:24,030 προκλητική αλγόριθμοι και το πρόβλημα σύνολα που έχουμε για να καταλάβουμε, 498 00:25:24,030 --> 00:25:27,210 αρχής γενομένης από το ψευδοκώδικα δεν είναι ανησυχητικό σχετικά με τη σύνταξη, ακριβώς ανησυχούν για 499 00:25:27,210 --> 00:25:29,150 η λογική, είναι απίστευτα χρήσιμη. 500 00:25:29,150 --> 00:25:32,720 Και με αυτόν τον τρόπο, δεν είστε επίλυση δύο απίστευτα δύσκολα προβλήματα ταυτόχρονα. 501 00:25:32,720 --> 00:25:35,390 Είσαι μόνο με επίκεντρο τη λογική, και στη συνέχεια θα προχωρήσουμε στη σύνταξη. 502 00:25:35,390 --> 00:25:59,960 503 00:25:59,960 --> 00:26:01,385 >> OK. 504 00:26:01,385 --> 00:26:03,680 Ας ξεκινήσουμε διέρχεται ο ψευδοκώδικας. 505 00:26:03,680 --> 00:26:05,380 Έχω γράψει εδώ, δυαδική αναζήτηση ψευδοκώδικα. 506 00:26:05,380 --> 00:26:07,360 Θα γράψω αυτό για το επιβιβαστεί μαζί. 507 00:26:07,360 --> 00:26:10,040 Ή εγώ θα το γράψω και θα δώσει μου τις προτροπές που χρειάζομαι. 508 00:26:10,040 --> 00:26:15,010 Έτσι, μπορεί κανείς να μου δώσει την πρώτη γραμμή του ψευδοκώδικα σας 509 00:26:15,010 --> 00:26:18,350 έγραψε για την δυαδική αναζήτηση; 510 00:26:18,350 --> 00:26:20,258 Ναι, Annie; 511 00:26:20,258 --> 00:26:22,698 >> ΦΟΙΤΗΤΗΣ: Αν και το μήκος της κατάλογος είναι μεγαλύτερο από μηδέν. 512 00:26:22,698 --> 00:26:26,114 513 00:26:26,114 --> 00:26:34,880 >> JASON Hirschhorn: Ενώ το μήκος της λίστας μεγαλύτερη από μηδέν. 514 00:26:34,880 --> 00:26:38,810 Και πάλι, βλέπουμε μερικά C-αναζητούν συντακτικά πράγματα εδώ. 515 00:26:38,810 --> 00:26:41,550 Αλλά τα περισσότερα από αυτά είναι στα αγγλικά. 516 00:26:41,550 --> 00:26:43,980 Μήπως κάποιος έχει κάποια γραμμή βάζουν πριν από αυτό το ψευδο-κώδικα τους; 517 00:26:43,980 --> 00:26:47,280 518 00:26:47,280 --> 00:26:50,210 >> ΦΟΙΤΗΤΗΣ: Πάρτε μια σειρά ταξινόμηση των αριθμών. 519 00:26:50,210 --> 00:26:53,600 >> JASON Hirschhorn: Έγραψες "πάρετε μια σειρά των ταξινομημένων αριθμών. "Per η 520 00:26:53,600 --> 00:26:56,140 δήλωση της συνάρτησης, θα πρέπει να περνά μια σειρά από αριθμούς ταξινομημένο. 521 00:26:56,140 --> 00:26:57,280 >> ΦΟΙΤΗΤΗΣ: [δεν ακούγεται]. 522 00:26:57,280 --> 00:26:59,030 >> JASON Hirschhorn: Έτσι θα έχουμε ότι. 523 00:26:59,030 --> 00:27:01,820 Αλλά ναι, αν δεν είχαμε αυτό, θα πρέπει να ταξινομήσετε μας σειρά 524 00:27:01,820 --> 00:27:04,850 αριθμοί, διότι δυαδική αναζήτηση λειτουργεί μόνο για ταξινόμηση συστοιχίες. 525 00:27:04,850 --> 00:27:11,300 Έτσι, ενώ το μήκος της λίστας ισούται με μηδέν, είμαι πρόκειται να τεθεί σε κάποια άγκιστρα 526 00:27:11,300 --> 00:27:15,420 για να φανεί λίγο περισσότερο σαν C. Όμως, ενώ, φαίνεται να χαρτογραφήσει σε ένα 527 00:27:15,420 --> 00:27:19,550 while loop, έτσι ώστε μέσα σε αυτό, ενώ βρόχο, τι χρειαζόμαστε για να 528 00:27:19,550 --> 00:27:22,000 κάνει για δυαδική αναζήτηση; 529 00:27:22,000 --> 00:27:25,530 >> Κάποιος άλλος που δεν μου έχει δοθεί απαντήσει ακόμα, αλλά ποιος το έγραψε αυτό; 530 00:27:25,530 --> 00:27:31,750 531 00:27:31,750 --> 00:27:33,320 >> ΦΟΙΤΗΤΗΣ: Πηγαίνετε στη μέση της λίστας. 532 00:27:33,320 --> 00:27:33,980 >> JASON Hirschhorn: Τομ. 533 00:27:33,980 --> 00:27:35,230 Πάνε στη μέση της λίστας. 534 00:27:35,230 --> 00:27:43,290 535 00:27:43,290 --> 00:27:45,530 Και η παρακολούθηση ερώτηση, τι κάνουμε μόλις είμαστε κατά τη 536 00:27:45,530 --> 00:27:46,870 μέση της λίστας; 537 00:27:46,870 --> 00:27:49,310 >> ΦΟΙΤΗΤΗΣ: Κάνετε έναν έλεγχο αν αυτό είναι ο αριθμός που ψάχνετε. 538 00:27:49,310 --> 00:27:50,120 >> JASON Hirschhorn: Εξαιρετική. 539 00:27:50,120 --> 00:28:05,500 Πηγαίνετε στη μέση της λίστας και ελέγξτε αν η αξία μας είναι εκεί - 540 00:28:05,500 --> 00:28:06,515 φανταστική. 541 00:28:06,515 --> 00:28:10,460 Μήπως κάποιος έχει τίποτα άλλο ότι ήταν διαφορετικό από αυτό; 542 00:28:10,460 --> 00:28:11,210 Αυτό είναι ακριβώς σωστό. 543 00:28:11,210 --> 00:28:13,800 >> Το πρώτο πράγμα που κάνουμε σε δυαδική αναζήτηση είναι να πάτε στη μέση της λίστας και 544 00:28:13,800 --> 00:28:15,870 ελέγξτε για να δείτε εάν η αξία μας είναι εκεί. 545 00:28:15,870 --> 00:28:19,682 Έτσι υποθέτω ότι αν η τιμή μας είναι εκεί, τι θα κάνουμε; 546 00:28:19,682 --> 00:28:21,610 >> ΦΟΙΤΗΤΗΣ: Θα επιστρέψει το μηδέν [δεν ακούγεται]. 547 00:28:21,610 --> 00:28:23,400 >> JASON Hirschhorn: Ναι, αν μας τιμή είναι εκεί, το βρήκαμε. 548 00:28:23,400 --> 00:28:27,950 Έτσι, μπορούμε να πούμε κατά κάποιο τρόπο, ωστόσο αυτό συνάρτηση ορίζεται, θα πει ο χρήστης 549 00:28:27,950 --> 00:28:28,520 το βρήκαμε. 550 00:28:28,520 --> 00:28:30,950 Αν δεν είναι εκεί, όμως, ότι είναι όπου αυτό γίνεται δύσκολη. 551 00:28:30,950 --> 00:28:35,120 Έτσι, αν δεν είναι εκεί, κάποιος άλλος που δούλευε στη δυαδική αναζήτηση ή 552 00:28:35,120 --> 00:28:36,830 έχει μια ιδέα τώρα, τι κάνουμε; 553 00:28:36,830 --> 00:28:37,830 >> ΣΠΟΥΔΑΣΤΩΝ: Ερώτηση. 554 00:28:37,830 --> 00:28:38,100 >> JASON Hirschhorn: Ναι; 555 00:28:38,100 --> 00:28:39,920 >> ΦΟΙΤΗΤΗΣ: Είναι η σειρά έχει ήδη ταξινόμηση; 556 00:28:39,920 --> 00:28:42,200 >> JASON Hirschhorn: Ναι, υποθέτουμε η σειρά είναι ήδη ταξινομημένο. 557 00:28:42,200 --> 00:28:46,480 >> ΦΟΙΤΗΤΗΣ: Μέχρι τότε θα πρέπει να ελέγξετε εάν η τιμή που βλέπετε είναι μεγαλύτερη από ό, τι 558 00:28:46,480 --> 00:28:51,745 η τιμή που θέλετε, μπορείτε να μετακινήσετε στη μέση του άλλου ημίσεως. 559 00:28:51,745 --> 00:28:54,110 >> JASON Hirschhorn: Έτσι, αν η μέση η λίστα είναι μεγαλύτερη από ό, τι είμαστε 560 00:28:54,110 --> 00:28:57,440 ψάχνετε, τότε κάνουμε τι; 561 00:28:57,440 --> 00:28:58,320 Προχωράμε πού; 562 00:28:58,320 --> 00:29:01,400 >> ΦΟΙΤΗΤΗΣ: Θέλετε να μετακινηθούν σε το ήμισυ του καταλόγου με 563 00:29:01,400 --> 00:29:02,780 αριθμοί χαμηλότερη από εκείνη. 564 00:29:02,780 --> 00:29:04,460 >> JASON Hirschhorn: έτσι θα καλέστε ότι η αριστερά. 565 00:29:04,460 --> 00:29:15,435 Έτσι, αν μεσαίο είναι μεγαλύτερο, μπορούμε να ψάξουμε το αριστερό μισό της λίστας. 566 00:29:15,435 --> 00:29:20,620 567 00:29:20,620 --> 00:29:22,980 Και στη συνέχεια με την αναζήτηση, τι εννοώ με την αναζήτηση; 568 00:29:22,980 --> 00:29:24,010 >> ΦΟΙΤΗΤΗΣ: [δεν ακούγεται]. 569 00:29:24,010 --> 00:29:24,410 >> JASON Hirschhorn: Πάμε στη μέση. 570 00:29:24,410 --> 00:29:25,740 Είμαστε πραγματικά επαναλάβετε αυτό το πράγμα. 571 00:29:25,740 --> 00:29:29,210 Εμείς πάμε πίσω μέσω βρόχο while μας. 572 00:29:29,210 --> 00:29:31,480 Θα σας δώσω το τελευταίο - 573 00:29:31,480 --> 00:29:39,047 άλλο, εάν, μέση είναι μικρότερη από ό, τι εμείς, τι κάνουμε εδώ; 574 00:29:39,047 --> 00:29:40,360 >> ΦΟΙΤΗΤΗΣ: Μετάβαση προς τα δεξιά. 575 00:29:40,360 --> 00:29:41,610 >> JASON Hirschhorn: Αναζήτηση το δικαίωμα. 576 00:29:41,610 --> 00:29:47,440 577 00:29:47,440 --> 00:29:51,710 Αυτό φαίνεται καλό, αλλά δεν έχει κανέναν κάτι που μπορεί να λείπει ή 578 00:29:51,710 --> 00:29:53,200 οτιδήποτε άλλο που βάζετε σε ψευδο-κώδικα σας; 579 00:29:53,200 --> 00:29:57,080 580 00:29:57,080 --> 00:29:58,410 Έτσι, αυτό είναι ό, τι έχουμε μέχρι τώρα. 581 00:29:58,410 --> 00:30:00,960 Ενώ το μήκος του καταλόγου είναι μεγαλύτερο από το μηδέν, θα πάμε για να πάει 582 00:30:00,960 --> 00:30:03,220 στη μέση της λίστας και ελέγξτε αν η αξία μας είναι εκεί. 583 00:30:03,220 --> 00:30:06,970 >> Εάν η μέση τιμή είναι μεγαλύτερη, θα πάμε να αναζήτηση αριστερά, αλλιώς αν το μεσαίο είναι 584 00:30:06,970 --> 00:30:09,230 λιγότερο, θα πάμε για να αναζητήσετε το δικαίωμα. 585 00:30:09,230 --> 00:30:14,430 Έτσι, έχουμε όλοι είχαν κάποια εξοικείωση με οι όροι που χρησιμοποιούμε στην επιστήμη των υπολογιστών 586 00:30:14,430 --> 00:30:15,550 και τα εργαλεία που έχουμε. 587 00:30:15,550 --> 00:30:18,300 Αλλά θα παρατηρήσετε ήδη ήμασταν μιλώντας στα αγγλικά, αλλά βρήκαμε μια 588 00:30:18,300 --> 00:30:24,790 πολλά πράγματα που φαινόταν στο χάρτη για να εργαλεία που έχουμε στην κωδικοποίηση εργαλειοθήκη μας. 589 00:30:24,790 --> 00:30:27,210 Έτσι, δεξιά από το ρόπαλο, δεν είμαστε πρόκειται να κωδικοποιήσει στην πραγματικότητα ακόμα. 590 00:30:27,210 --> 00:30:33,300 >> Τι βλέπουμε εδώ στα αγγλικά ότι οι χάρτες για τα πράγματα που μπορεί να γράψει σε C; 591 00:30:33,300 --> 00:30:34,560 >> ΣΠΟΥΔΑΣΤΩΝ: Ενώ. 592 00:30:34,560 --> 00:30:35,320 >> JASON Hirschhorn: Ενώ. 593 00:30:35,320 --> 00:30:40,610 Έτσι αυτό, ενώ εδώ χάρτες για να κάνουν τι; 594 00:30:40,610 --> 00:30:42,630 >> ΦΟΙΤΗΤΗΣ: A βρόχο while. 595 00:30:42,630 --> 00:30:43,200 >> JASON Hirschhorn: Α, ενώ βρόχος; 596 00:30:43,200 --> 00:30:44,540 Ή μάλλον, γενικότερα, ένας βρόχος. 597 00:30:44,540 --> 00:30:46,260 Θέλουμε να κάνουμε κάτι ξανά και ξανά. 598 00:30:46,260 --> 00:30:49,050 Έτσι θα πάμε για να κωδικοποιήσει ένα βρόχο. 599 00:30:49,050 --> 00:30:51,640 Και εμείς ήδη ξέρουμε, γιατί έχουμε κάνει αυτό μια-δυο φορές και εμείς 600 00:30:51,640 --> 00:30:54,180 έχουν πολλά παραδείγματα εκεί έξω, πώς πράγματι να γράψω 601 00:30:54,180 --> 00:30:55,310 Ο δείκτης αυτός για έναν βρόχο. 602 00:30:55,310 --> 00:30:56,160 Έτσι ώστε να είναι αρκετά εύκολο. 603 00:30:56,160 --> 00:30:58,070 Θα πρέπει να είναι σε θέση να πάρει ότι ξεκίνησε αρκετά γρήγορα. 604 00:30:58,070 --> 00:31:01,830 >> Τι άλλο μπορούμε να δούμε εδώ; 605 00:31:01,830 --> 00:31:06,820 Ποιες άλλες δομές συντάξεις, τα πράγματα ότι είμαστε εξοικειωμένοι με το C, εμείς 606 00:31:06,820 --> 00:31:09,790 έχουν ήδη μια αίσθηση βασισμένη εκτός από τις λέξεις που χρησιμοποιούνται; 607 00:31:09,790 --> 00:31:10,830 Ναι, η Άννα; 608 00:31:10,830 --> 00:31:11,360 [Δεν ακούγεται] 609 00:31:11,360 --> 00:31:12,990 Αστειεύομαι. 610 00:31:12,990 --> 00:31:13,540 Άννα, να προχωρήσει. 611 00:31:13,540 --> 00:31:14,530 >> ΦΟΙΤΗΤΗΣ: Αν και αλλού. 612 00:31:14,530 --> 00:31:16,260 >> JASON Hirschhorn: Αν και άλλο - ακριβώς εδώ. 613 00:31:16,260 --> 00:31:18,840 Λοιπόν, τι κάνουν εκείνοι μοιάζουν; 614 00:31:18,840 --> 00:31:20,420 >> ΦΟΙΤΗΤΗΣ: Μια if else δήλωση. 615 00:31:20,420 --> 00:31:21,560 >> JASON Hirschhorn: Ναι, συνθήκες, έτσι δεν είναι; 616 00:31:21,560 --> 00:31:24,650 Γι 'αυτό και θα πρέπει πιθανώς να γράψουν κάποιες προϋποθέσεις. 617 00:31:24,650 --> 00:31:31,185 Και πάλι, αν και ίσως προκαλέσει σύγχυση στην Πρώτα, θα έχουν γενικά μια αίσθηση τώρα 618 00:31:31,185 --> 00:31:34,010 πώς να γράψει τις συνθήκες και η σύνταξη για τις συνθήκες. 619 00:31:34,010 --> 00:31:36,850 Και αν δεν το κάνουμε, απλά κοιτάζω προς τα πάνω το σύνταξη για τις συνθήκες, αποκοπή και επικόλληση 620 00:31:36,850 --> 00:31:39,950 ότι, επειδή εμείς ξέρουμε χρειάζονται μια κατάσταση εδώ. 621 00:31:39,950 --> 00:31:44,910 Οποιαδήποτε άλλα πράγματα που βλέπουμε ότι σε χάρτη πράγματα που ίσως χρειαστεί να κάνετε σε C; 622 00:31:44,910 --> 00:31:48,312 623 00:31:48,312 --> 00:31:48,960 Ναι, Aleha; 624 00:31:48,960 --> 00:31:50,370 >> ΦΟΙΤΗΤΗΣ: Αυτό μπορεί να είναι προφανής, με ακριβώς τον έλεγχο, αν μια 625 00:31:50,370 --> 00:31:51,990 αξία ισούται με κάτι. 626 00:31:51,990 --> 00:31:54,578 >> JASON Hirschhorn: Επομένως, πώς θα ελέγξει και - έτσι πάμε στην μέση της λίστας 627 00:31:54,578 --> 00:31:55,610 και ελέγξτε αν η αξία μας είναι εκεί; 628 00:31:55,610 --> 00:31:56,570 Πώς θα το κάνουμε αυτό σε C; 629 00:31:56,570 --> 00:31:58,450 Ποια είναι η σύνταξη για αυτό; 630 00:31:58,450 --> 00:31:59,235 >> ΦΟΙΤΗΤΗΣ: Ίσο, ισούται με. 631 00:31:59,235 --> 00:32:00,650 >> JASON Hirschhorn: Ίσο, ισούται με. 632 00:32:00,650 --> 00:32:03,540 Έτσι, ο έλεγχος αυτός κατά πάσα πιθανότητα θα να εξισώνουν, ισούται με. 633 00:32:03,540 --> 00:32:04,510 Έτσι θα ξέρουμε ότι χρειαζόμαστε κάπου. 634 00:32:04,510 --> 00:32:07,510 Και στην πραγματικότητα, απλά εγγράφως ότι, βλέπουμε αυτά τα άλλα πράγματα. 635 00:32:07,510 --> 00:32:11,400 Εμείς πάμε να χρειαστεί να κάνετε κάποια τελεστές σύγκρισης εκεί - 636 00:32:11,400 --> 00:32:12,010 φανταστική. 637 00:32:12,010 --> 00:32:14,980 Έτσι φαίνεται πραγματικά σαν, από και μεγάλη, δεν έχουμε γράψει ένα 638 00:32:14,980 --> 00:32:16,390 λέξη του κώδικα C ακόμα. 639 00:32:16,390 --> 00:32:20,610 Αλλά πήραμε το νοητικό μοντέλο κάτω μέσω διαλέξεων και αυτές σορτς. 640 00:32:20,610 --> 00:32:22,350 >> Γράψαμε ψευδο-κώδικα ως ομάδα. 641 00:32:22,350 --> 00:32:27,110 Και ήδη, έχουμε 80%, εφόσον δεν Το 90% του τι πρέπει να κάνουμε. 642 00:32:27,110 --> 00:32:28,550 Τώρα, εμείς απλά πρέπει να κωδικοποιήσει αυτό, το οποίο και πάλι, είναι ένα 643 00:32:28,550 --> 00:32:30,110 μη τετριμμένη πρόβλημα προς επίλυση. 644 00:32:30,110 --> 00:32:31,890 Αλλά τουλάχιστον έχουμε κολλήσει στη λογική. 645 00:32:31,890 --> 00:32:38,040 Τουλάχιστον τώρα όταν πάμε σε ώρες γραφείου, Μπορώ να πω, ξέρω τι χρειάζομαι 646 00:32:38,040 --> 00:32:40,160 να κάνει, αλλά μπορεί να σας υπενθυμίσω Θέλω τη σύνταξη; 647 00:32:40,160 --> 00:32:42,940 Ή ακόμα και αν οι ώρες γραφείου γεμάτο, μπορείτε να το Google για τη σύνταξη, μάλλον 648 00:32:42,940 --> 00:32:45,040 από το να κολλήσει στη λογική. 649 00:32:45,040 --> 00:32:48,570 >> Και πάλι, αντί να προσπαθούν να λύσουν η λογική και τα προβλήματα σύνταξη όλων 650 00:32:48,570 --> 00:32:51,900 με τη μία, είναι συχνά πολύ καλύτερο να να σπάσει αυτά τα δύο δύσκολα προβλήματα μακριά στο 651 00:32:51,900 --> 00:32:58,280 δύο πιο εύχρηστο αυτά και να κάνει το ψευδο-κώδικα και στη συνέχεια κώδικα σε C. 652 00:32:58,280 --> 00:33:00,620 Ας δούμε λοιπόν τι έκανα για την ψευδο-κώδικα μπροστά από το χρόνο. 653 00:33:00,620 --> 00:33:04,060 >> Ενώ το μήκος του καταλόγου είναι μεγαλύτερο από το μηδέν, να δούμε στη μέση 654 00:33:04,060 --> 00:33:05,090 του καταλόγου. 655 00:33:05,090 --> 00:33:09,610 Αν βρεθεί αριθμός που επιστρέφει αληθές, αλλιώς αν υψηλότερο αριθμό, αναζήτησης αριστερά. 656 00:33:09,610 --> 00:33:13,200 Αλλιώς, εάν ο αριθμός κάτω, αναζήτηση δεξιά, επιστρέφει false. 657 00:33:13,200 --> 00:33:18,710 Έτσι ώστε να είναι σχεδόν ίδιο, αν όχι σχεδόν πανομοιότυπο με αυτό που έγραψε. 658 00:33:18,710 --> 00:33:23,030 Στην πραγματικότητα, ο Τομ, τι είπε το πρώτο, σπάζοντας την μέση της λίστας και, εάν 659 00:33:23,030 --> 00:33:24,880 αριθμό που βρίσκεται σε δύο καταστάσεις είναι στην πραγματικότητα αυτό που έκανα. 660 00:33:24,880 --> 00:33:25,507 >> Τα συνδύασα εκεί. 661 00:33:25,507 --> 00:33:27,100 Θα έπρεπε να είχα ακούσει σας την πρώτη φορά. 662 00:33:27,100 --> 00:33:30,640 Αυτή είναι λοιπόν η ψευδο-κώδικα που έχουμε. 663 00:33:30,640 --> 00:33:35,060 Αν θέλετε τώρα, συγνώμη, πηγαίνετε πίσω στο αρχικό μας πρόβλημα. 664 00:33:35,060 --> 00:33:37,780 Ας κωδικό binary.c. 665 00:33:37,780 --> 00:33:40,870 Έτσι εφαρμόσει μια επαναληπτική έκδοση των δυαδική αναζήτηση χρησιμοποιώντας την ακόλουθη 666 00:33:40,870 --> 00:33:42,420 δήλωση της συνάρτησης. 667 00:33:42,420 --> 00:33:44,550 >> Και δεν χρειάζεται να αντιγράψετε κάτω ακριβώς ακόμα. 668 00:33:44,550 --> 00:33:49,470 Είμαι πραγματικά πρόκειται να ανοίξει μέχρι εδώ binary.c. 669 00:33:49,470 --> 00:33:52,880 Έτσι, υπάρχει η δήλωση της συνάρτησης στη μέση της οθόνης. 670 00:33:52,880 --> 00:33:57,570 Και θα δείτε Πήρα το ψευδο-κώδικα από στις πλευρές μου, αλλά σχεδόν ταυτόσημες 671 00:33:57,570 --> 00:33:59,740 σε ό, τι γράψαμε, και θέσω σε σας. 672 00:33:59,740 --> 00:34:06,010 Έτσι τώρα, ας πέντε λεπτά να κωδικοποιήσει αυτή τη λειτουργία. 673 00:34:06,010 --> 00:34:08,199 >> Και πάλι, αν έχετε οποιεσδήποτε ερωτήσεις, σηκώστε το χέρι σας, επιτρέψτε μου να ξέρω, εγώ θα 674 00:34:08,199 --> 00:34:08,710 έρθουν κοντά. 675 00:34:08,710 --> 00:34:09,800 >> ΦΟΙΤΗΤΗΣ: [δεν ακούγεται]. 676 00:34:09,800 --> 00:34:12,380 >> JASON Hirschhorn: Έτσι πήρα το δυαδικό ορισμό αναζήτησης κατά τη 677 00:34:12,380 --> 00:34:14,429 κορυφή, στη γραμμή 12. 678 00:34:14,429 --> 00:34:16,429 Αυτό είναι ό, τι πήρα για την slide μου. 679 00:34:16,429 --> 00:34:20,940 Και τότε όλη αυτή η ψευδο-κώδικα που μόλις αντιγραφή και επικόλληση από το κλείστρο, 680 00:34:20,940 --> 00:34:22,190 ψευδο-κώδικα διαφάνεια. 681 00:34:22,190 --> 00:35:22,830 682 00:35:22,830 --> 00:35:26,786 Δεν είμαι ακόμα άκουσε [δεν ακούγεται]. 683 00:35:26,786 --> 00:37:13,010 684 00:37:13,010 --> 00:37:15,820 >> Έτσι, αν έχετε τελειώσει σας εφαρμογή, θέλω να το ελέγξουμε. 685 00:37:15,820 --> 00:37:19,410 Σας αποσταλεί το αρχείο helpers.h νωρίτερα σε αυτή την κατηγορία. 686 00:37:19,410 --> 00:37:22,360 Και θα είναι διαθέσιμα στο διαδίκτυο, καθώς και για download για άτομα που παρακολουθούν 687 00:37:22,360 --> 00:37:24,750 αυτή τη φορά το τμήμα καθυστερήσει. 688 00:37:24,750 --> 00:37:29,350 Και χρησιμοποίησα μόνο τη γενική κατανομή κώδικα από pset3. 689 00:37:29,350 --> 00:37:34,590 Έτσι πήρα ΡΓΝϋ.Ο, χρησιμοποιήστε το αρχείο helpers.h μου και όχι στο αρχείο helpers.h 690 00:37:34,590 --> 00:37:36,280 που σας δίνεται στον κώδικα της διανομής. 691 00:37:36,280 --> 00:37:39,310 >> Και έπρεπε να κάνω άλλη μια αλλαγή στην ΡΓΝϋ.Ο όχι καλώντας απλά 692 00:37:39,310 --> 00:37:42,770 αναζήτησης, καλέστε binary_search. 693 00:37:42,770 --> 00:37:49,080 Έτσι, εάν θέλετε να δοκιμάσετε τον κωδικό σας, Γνωρίζουμε ότι αυτό είναι το πώς να το κάνουμε. 694 00:37:49,080 --> 00:37:52,530 Στην πραγματικότητα, όταν εμείς θα πρέπει να τρέξεις αυτό τον κώδικα τώρα, μόλις έκανα ένα αντίγραφο του 695 00:37:52,530 --> 00:37:59,820 Κατάλογος pset3 μου, και πάλι, ανταλλαχθούν έξω τα αρχεία βοηθοί και στη συνέχεια έκανε ότι 696 00:37:59,820 --> 00:38:04,695 αλλάξει ΡΓΝϋ.Ο να καλέσετε binary_search και όχι απλά αναζήτηση. 697 00:38:04,695 --> 00:40:08,620 698 00:40:08,620 --> 00:40:09,120 >> JASON Hirschhorn: Ναι. 699 00:40:09,120 --> 00:40:11,258 Έχετε μια ερώτηση; 700 00:40:11,258 --> 00:40:12,150 >> ΣΠΟΥΔΑΣΤΩΝ: Nevermind. 701 00:40:12,150 --> 00:40:12,600 >> JASON Hirschhorn: Μην ανησυχείτε. 702 00:40:12,600 --> 00:40:13,370 Λοιπόν, ας ξεκινήσουμε. 703 00:40:13,370 --> 00:40:15,090 Εμείς θα κωδικοποιήσει αυτό ως ομάδα. 704 00:40:15,090 --> 00:40:16,050 Ένα άλλο σημείωμα. 705 00:40:16,050 --> 00:40:20,600 Και πάλι, αυτό είναι, μπορεί εύκολα να ανταλλαχθούν in για το πρόβλημα Set Τρία. 706 00:40:20,600 --> 00:40:25,530 Έχω το αρχείο helpers.h μου ο οποίος, αντί από το helpers.h μας δίνεται, 707 00:40:25,530 --> 00:40:28,560 δηλώνει δυαδική αναζήτηση, φούσκα το είδος και το είδος επιλογής. 708 00:40:28,560 --> 00:40:37,400 Και σε ΡΓΝϋ.Ο θα παρατηρήσετε on line, τι είναι αυτό, γραμμή 68, που ονομάζουμε δυαδικό 709 00:40:37,400 --> 00:40:39,160 αναζήτηση και όχι την αναζήτηση. 710 00:40:39,160 --> 00:40:42,930 Έτσι και πάλι, ο κώδικας που είναι διαθέσιμα σε απευθείας σύνδεση ή ο κωδικός που είστε 711 00:40:42,930 --> 00:40:46,590 δημιουργώντας τώρα μπορεί εύκολα να ανταλλαχθούν μέσα για p set 3 για να το ελέγξει. 712 00:40:46,590 --> 00:40:50,620 >> Αλλά πρώτα, ας την κωδικοποίηση δυαδική αναζήτηση. 713 00:40:50,620 --> 00:40:53,690 Δήλωση της συνάρτησης μας, επιστρέφουμε μια bool. 714 00:40:53,690 --> 00:40:55,810 Παίρνουμε έναν ακέραιο αριθμό που ονομάζεται αξία. 715 00:40:55,810 --> 00:40:59,285 Παίρνουμε μια σειρά ακεραίων ονομάζεται αξίες, και παίρνουμε n είναι 716 00:40:59,285 --> 00:41:00,850 το μέγεθος της συστοιχίας. 717 00:41:00,850 --> 00:41:05,640 Στη γραμμή 10, ακριβώς εδώ, έχω απότομη περιλαμβάνουν stdbool.h. 718 00:41:05,640 --> 00:41:07,360 Ξέρει κανείς γιατί αυτό είναι εκεί; 719 00:41:07,360 --> 00:41:12,180 720 00:41:12,180 --> 00:41:16,600 Λοιπόν, τι σημαίνει ότι η γραμμή του κώδικα κάνει; 721 00:41:16,600 --> 00:41:19,880 >> ΦΟΙΤΗΤΗΣ: Σας επιτρέπει να χρησιμοποιήστε ένα είδος επιστροφής bool. 722 00:41:19,880 --> 00:41:20,350 >> JASON Hirschhorn: Ακριβώς. 723 00:41:20,350 --> 00:41:22,300 >> ΦΟΙΤΗΤΗΣ: Ή είναι μια βιβλιοθήκη που επιτρέπει να χρησιμοποιούν ένα είδος επιστροφής bool. 724 00:41:22,300 --> 00:41:27,590 >> JASON Hirschhorn: Έτσι, η απότομη περιλαμβάνουν stdbool.h γραμμή μου δίνει κάποια 725 00:41:27,590 --> 00:41:31,340 ορισμούς και τις δηλώσεις για τα πράγματα ότι είμαι επιτρέπεται να χρησιμοποιούν 726 00:41:31,340 --> 00:41:32,400 Αυτή η βιβλιοθήκη. 727 00:41:32,400 --> 00:41:36,570 Έτσι, μεταξύ εκείνων που λέει ότι δεν υπάρχει Αυτός ο τύπος ονομάζεται bool, και μπορεί να είναι 728 00:41:36,570 --> 00:41:37,750 αληθείς ή ψευδείς. 729 00:41:37,750 --> 00:41:39,010 Οπότε αυτό είναι που κάνει αυτή τη γραμμή. 730 00:41:39,010 --> 00:41:41,680 Και αν δεν είχα αυτή τη γραμμή, θα ήθελα να πάρει στο πρόβλημα για να γράψω αυτό 731 00:41:41,680 --> 00:41:43,520 σωστή λέξη εδώ, bool, ακριβώς εκεί. 732 00:41:43,520 --> 00:41:44,140 Ακριβώς δεξιά. 733 00:41:44,140 --> 00:41:46,430 Γι 'αυτό χρειάζεται ότι σε αυτόν τον κώδικα. 734 00:41:46,430 --> 00:41:47,690 OK. 735 00:41:47,690 --> 00:41:51,860 Έτσι αυτό, πάλι, είναι μια επαναληπτική έκδοση, δεν είναι ένα αναδρομικό ένα. 736 00:41:51,860 --> 00:41:53,820 Έτσι, ας ξεκινήσουμε. 737 00:41:53,820 --> 00:41:56,200 >> Ας ξεκινήσουμε με αυτό το πρώτο γραμμή κώδικα ψευδο. 738 00:41:56,200 --> 00:41:58,770 Και ελπίζω, θα το κάνουμε - ή δεν ελπίζουμε. 739 00:41:58,770 --> 00:42:00,530 Εμείς πάμε για να πάει γύρω από το δωμάτιο. 740 00:42:00,530 --> 00:42:05,110 Θα πάμε γραμμή προς γραμμή, και θα βοηθήσει να καταλάβω τη γραμμή που χρειαζόμαστε 741 00:42:05,110 --> 00:42:06,310 να γράψει το πρώτο. 742 00:42:06,310 --> 00:42:10,550 Έτσι, ενώ το μήκος της λίστας είναι μεγαλύτερη από το μηδέν. 743 00:42:10,550 --> 00:42:12,680 Ας ξεκινήσει το μέτωπο. 744 00:42:12,680 --> 00:42:15,190 Σε ποια γραμμή πρέπει να γράψω εδώ, στον κώδικα; 745 00:42:15,190 --> 00:42:19,470 >> ΦΟΙΤΗΤΗΣ: Ενώ η παρένθεση η είναι μεγαλύτερο από μηδέν. 746 00:42:19,470 --> 00:42:21,900 >> JASON Hirschhorn: Ενώ n είναι μεγάλη από 0. 747 00:42:21,900 --> 00:42:26,550 Έτσι n είναι το μέγεθος του καταλόγου, και είμαστε ελέγχοντας αν - 748 00:42:26,550 --> 00:42:26,800 >> [Παρεμβάλλοντας VOICES] 749 00:42:26,800 --> 00:42:27,660 >> JASON Hirschhorn: - Ορίστε; 750 00:42:27,660 --> 00:42:29,360 >> ΦΟΙΤΗΤΗΣ: Πώς ξέρουμε ότι n είναι το μέγεθος του καταλόγου; 751 00:42:29,360 --> 00:42:29,690 >> JASON Hirschhorn: Συγγνώμη. 752 00:42:29,690 --> 00:42:34,690 Σύμφωνα με τις προδιαγραφές από το chipset, η αναζήτηση και το είδος λειτουργεί θα πρέπει να γράψετε, 753 00:42:34,690 --> 00:42:36,230 n είναι το μέγεθος του καταλόγου. 754 00:42:36,230 --> 00:42:37,710 Ξέχασα να εξηγήσω ότι εδώ. 755 00:42:37,710 --> 00:42:41,310 Αλλά ναι. n είναι το μέγεθος του ο κατάλογος, σε αυτή την περίπτωση. 756 00:42:41,310 --> 00:42:44,740 Έτσι ενώ η είναι μεγαλύτερο από μηδέν. 757 00:42:44,740 --> 00:42:45,580 OK. 758 00:42:45,580 --> 00:42:50,090 Αυτό μπορεί να αποδειχθεί λίγο προβληματική όμως, αν τα πράγματα πάνε. 759 00:42:50,090 --> 00:42:54,510 Επειδή θα συνεχίσουμε να γνωρίζουν την μέγεθος της λίστας όλη αυτή 760 00:42:54,510 --> 00:43:06,640 λειτουργία, αλλά λένε θα ξεκινήσει με μια σειρά από 5 ακεραίων. 761 00:43:06,640 --> 00:43:08,950 Και περνάμε και έχουμε τώρα τον περιόρισε σε 762 00:43:08,950 --> 00:43:10,310 μια σειρά από 2 ακεραίων. 763 00:43:10,310 --> 00:43:12,160 Ποια 2 ακέραιοι είναι αυτό; 764 00:43:12,160 --> 00:43:15,895 Το μέγεθος είναι 2 τώρα ότι θέλουμε να εξετάσουμε, αλλά ποια 2 είναι αυτό; 765 00:43:15,895 --> 00:43:17,720 Μήπως αυτό έχει νόημα, αυτό το ερώτημα; 766 00:43:17,720 --> 00:43:18,020 >> OK. 767 00:43:18,020 --> 00:43:19,120 Θα το ρωτήσω και πάλι. 768 00:43:19,120 --> 00:43:26,640 Έτσι ξεκινάμε με αυτή την σειρά 5 ακέραιοι και n ισούται με 5, σωστά; 769 00:43:26,640 --> 00:43:28,050 Θα τρέχει μέσα από εδώ. 770 00:43:28,050 --> 00:43:31,560 εμείς πιθανόν να αλλάξετε το μέγεθος, δικαίωμα, όπως έχουν τα πράγματα πάνε. 771 00:43:31,560 --> 00:43:32,700 Ποιο είναι αυτό που λέμε ότι θέλουμε να κάνουμε. 772 00:43:32,700 --> 00:43:34,150 Δεν θέλετε να αναζητήσετε το πλήρες πράγμα ξανά. 773 00:43:34,150 --> 00:43:35,480 Έτσι λέω να το αλλάξετε σε 2. 774 00:43:35,480 --> 00:43:36,970 Έχουμε λάβει το ήμισυ του καταλόγου που είναι περίεργο. 775 00:43:36,970 --> 00:43:38,800 Έτσι, απλά επιλέξτε 2. 776 00:43:38,800 --> 00:43:40,590 Έτσι τώρα ισούται με n 2. 777 00:43:40,590 --> 00:43:42,780 Ζητώ συγγνώμη για τους φτωχούς ξηρό μαρκαδόρους. 778 00:43:42,780 --> 00:43:43,080 Σωστά; 779 00:43:43,080 --> 00:43:45,670 Και ψάχνουμε μέσα από τη λίστα και πάλι με μια λίστα μεγέθους 2. 780 00:43:45,670 --> 00:43:48,580 Λοιπόν, σειρά μας εξακολουθεί να είναι το μέγεθος 5. 781 00:43:48,580 --> 00:43:51,920 Εμείς λέμε ότι το μόνο που θέλουν να αναζήτηση 2 σημεία σε αυτό. 782 00:43:51,920 --> 00:43:53,590 Έτσι, ποιο 2 σημεία είναι αυτά; 783 00:43:53,590 --> 00:43:57,640 784 00:43:57,640 --> 00:43:58,815 >> Μήπως αυτό έχει νόημα; 785 00:43:58,815 --> 00:44:00,290 Είναι τα αριστερά 2 σημεία; 786 00:44:00,290 --> 00:44:01,940 Είναι τα σωστά σημεία 2; 787 00:44:01,940 --> 00:44:03,540 Είναι το μεσαίο 2 θέσεις; 788 00:44:03,540 --> 00:44:06,350 Έχουμε σπάσει το πρόβλημα κάτω, αλλά εμείς πραγματικά δεν ξέρω ποιο μέρος του 789 00:44:06,350 --> 00:44:11,600 το πρόβλημα είμαστε ακόμα κοιτάζοντας, ακριβώς από την κατοχή αυτών των 2 μεταβλητών. 790 00:44:11,600 --> 00:44:16,450 Έτσι χρειαζόμαστε λίγο περισσότερο στη συνέχεια, ενώ η είναι μεγαλύτερο από μηδέν. 791 00:44:16,450 --> 00:44:21,410 Πρέπει να ξέρεις που n είναι στην πραγματικότητα σειρά μας. 792 00:44:21,410 --> 00:44:26,660 >> Έτσι, έχει κάνει κανείς μια αλλάξετε αυτή τη γραμμή; 793 00:44:26,660 --> 00:44:27,970 Οι περισσότεροι αυτής της γραμμής είναι απολύτως σωστό. 794 00:44:27,970 --> 00:44:29,170 Είναι μια άλλη εκτός από εκεί; 795 00:44:29,170 --> 00:44:32,510 Μπορούμε να ανταλλάξουν κάτι προς n για να κάνει αυτή τη γραμμή λίγο καλύτερα; 796 00:44:32,510 --> 00:44:32,865 Mm-hm; 797 00:44:32,865 --> 00:44:38,040 >> ΦΟΙΤΗΤΗΣ: Μπορείτε να προετοιμάσει μια μεταβλητή όπως το μήκος με n οποία θα πρέπει στη συνέχεια να χρησιμοποιηθεί 798 00:44:38,040 --> 00:44:39,600 αργότερα στη λειτουργία; 799 00:44:39,600 --> 00:44:42,060 >> JASON Hirschhorn: Έτσι η προετοιμασία ένα μεταβλητό μήκος έως n, 800 00:44:42,060 --> 00:44:42,900 και χρησιμοποιούμε αυτό αργότερα; 801 00:44:42,900 --> 00:44:47,070 Στη συνέχεια, όμως απλώς να ενημερώσετε το μήκος και εξακολουθούν να τρέχουν σε αυτό το πρόβλημα όπου 802 00:44:47,070 --> 00:44:51,180 μειώσουμε το μήκος του προβλήματός μας, αλλά ποτέ δεν ξέρουμε πού, στην πραγματικότητα, 803 00:44:51,180 --> 00:44:52,510 ότι το μήκος χάρτες επάνω. 804 00:44:52,510 --> 00:44:54,790 >> ΦΟΙΤΗΤΗΣ: Δεν είναι ότι πρόκειται να συμβεί αργότερα, όταν λέτε, αναζήτηση αριστερά, 805 00:44:54,790 --> 00:44:55,746 αναζήτηση σωστά; 806 00:44:55,746 --> 00:44:57,640 Θα πάμε για να πάει σε ένα διαφορετικό περιοχή σας - 807 00:44:57,640 --> 00:44:59,110 >> JASON Hirschhorn: Εμείς πάμε για να πάει σε μια περιοχή, αλλά πώς ξέρουμε 808 00:44:59,110 --> 00:45:01,150 η οποία είναι να μεταβείτε στον ιστότοπο; 809 00:45:01,150 --> 00:45:03,800 Αν έχουμε μόνο τη σειρά και αυτό n, πώς ξέρουμε πού να 810 00:45:03,800 --> 00:45:05,050 πηγαίνουν στην συστοιχία. 811 00:45:05,050 --> 00:45:05,900 Στο πίσω μέρος, ναι; 812 00:45:05,900 --> 00:45:07,507 >> ΦΟΙΤΗΤΗΣ: Έχετε, όπως, ένα κατώτερο εξώφυλλο και ένα άνω φράγμα μεταβλητή ή 813 00:45:07,507 --> 00:45:08,586 κάτι τέτοιο; 814 00:45:08,586 --> 00:45:09,060 >> JASON Hirschhorn: OK. 815 00:45:09,060 --> 00:45:10,780 Έτσι, αυτό είναι μια άλλη ιδέα. 816 00:45:10,780 --> 00:45:13,490 Αντί απλά την παρακολούθηση της μέγεθος, θα παρακολουθείτε την κάτω και 817 00:45:13,490 --> 00:45:14,770 άνω όριο μεταβλητή. 818 00:45:14,770 --> 00:45:17,840 Επομένως, πώς θα υπολογίσετε το μέγεθος από ένα κατώτερο όριο και άνω όριο; 819 00:45:17,840 --> 00:45:18,520 >> [Παρεμβάλλοντας VOICES] 820 00:45:18,520 --> 00:45:19,710 >> JASON Hirschhorn: Αφαίρεση. 821 00:45:19,710 --> 00:45:23,650 Και, επίσης, την παρακολούθηση του κατώτερου δεσμεύεται και άνω όριο για να μας ενημερώσετε, 822 00:45:23,650 --> 00:45:26,215 είμαστε ψάχνουν αυτά τα δύο; 823 00:45:26,215 --> 00:45:28,220 Είμαστε ψάχνουν αυτά τα δύο εδώ πέρα; 824 00:45:28,220 --> 00:45:29,540 Είμαστε ψάχνουν το μεσαίο δύο; 825 00:45:29,540 --> 00:45:32,810 Μάλλον δεν το μεσαίο δύο, γιατί Αυτό, στην πραγματικότητα, είναι η δυαδική αναζήτηση. 826 00:45:32,810 --> 00:45:37,320 Αλλά τώρα θα είμαστε σε θέση να πάρει το μέγεθος, αλλά επίσης και τα όρια της συστοιχίας. 827 00:45:37,320 --> 00:45:40,020 Στην ουσία, αν έχουμε γίγαντας μας τηλεφωνικό κατάλογο, θα το rip στο μισό. 828 00:45:40,020 --> 00:45:42,990 Γνωρίζουμε πλέον ότι οι μικρότερες, όπου τηλεφωνικού καταλόγου. 829 00:45:42,990 --> 00:45:45,260 Αλλά δεν είμαστε πραγματικά εξαίρετος τον τηλεφωνικό κατάλογο στη μέση. 830 00:45:45,260 --> 00:45:48,570 Θα πρέπει ακόμα να γνωρίζουμε όταν η νέα όρια του προβλήματός μας είναι. 831 00:45:48,570 --> 00:45:51,645 Μήπως κάποιος έχει απορίες γι 'αυτό; 832 00:45:51,645 --> 00:45:52,440 Ναι; 833 00:45:52,440 --> 00:45:56,020 >> ΦΟΙΤΗΤΗΣ: Θα συνεργαστεί με τη δημιουργία ενός μεταβλητή, i, ότι τότε μόνο μετατόπιση 834 00:45:56,020 --> 00:46:00,770 η θέση του i σε σχέση με τους τρέχουσα θέση και το μήκος, το η; 835 00:46:00,770 --> 00:46:01,710 >> JASON Hirschhorn: Και τι είναι το i; 836 00:46:01,710 --> 00:46:04,110 >> ΦΟΙΤΗΤΗΣ: Όπως το i είναι σαν είδος - 837 00:46:04,110 --> 00:46:08,040 Όπως και εσείς θα προετοιμαστεί i να είναι η μεσαία θέση της συστοιχίας. 838 00:46:08,040 --> 00:46:12,540 Και στη συνέχεια, εάν η τιμή στη θέση i σε η μέση της συστοιχίας διαπιστώθηκε 839 00:46:12,540 --> 00:46:17,870 είναι μικρότερη από την αξία που χρειάζεστε, εγώ τώρα γίνεται το μήκος της συστοιχίας, συν 840 00:46:17,870 --> 00:46:19,215 η τιμή του i διαιρείται δια 2. 841 00:46:19,215 --> 00:46:20,270 Όπως, βλέπετε, εγώ στροφή - 842 00:46:20,270 --> 00:46:20,770 >> JASON Hirschhorn: Σωστά. 843 00:46:20,770 --> 00:46:21,165 >> ΦΟΙΤΗΤΗΣ: - μέχρι το - 844 00:46:21,165 --> 00:46:24,010 >> JASON Hirschhorn: Είμαι, λοιπόν, σχεδόν θετικό που θα λειτουργήσει. 845 00:46:24,010 --> 00:46:26,800 Αλλά το θέμα είναι, θα πρέπει να έχετε δύο κομμάτια των πληροφοριών εδώ. 846 00:46:26,800 --> 00:46:30,050 Μπορείτε να το κάνετε με την αρχή και το τέλος, ή μπορείτε να το κάνετε με το μέγεθος του, και στη συνέχεια 847 00:46:30,050 --> 00:46:31,060 κάποια δείκτη. 848 00:46:31,060 --> 00:46:32,630 Αλλά χρειάζεται δύο κομμάτια πληροφορίες εδώ. 849 00:46:32,630 --> 00:46:34,160 Δεν μπορείτε να πάρετε από ένα και μόνο. 850 00:46:34,160 --> 00:46:35,830 Μήπως αυτό έχει νόημα; 851 00:46:35,830 --> 00:46:39,560 >> Έτσι θα πάμε για να πάει μέσα, και θα πάμε να κάνουμε [δεν ακούγεται] 852 00:46:39,560 --> 00:46:41,330 και να δημιουργήσει κάποια σημάδια. 853 00:46:41,330 --> 00:46:42,690 Τι έκανες γράψετε στον κώδικά σας; 854 00:46:42,690 --> 00:46:46,190 >> ΦΟΙΤΗΤΗΣ: Μόλις είπα int εξώφυλλο ένα είναι ίσο με 0. 855 00:46:46,190 --> 00:46:47,790 >> JASON Hirschhorn: Ας ονομάσουμε ότι int, αρχίζει. 856 00:46:47,790 --> 00:46:49,140 >> ΣΠΟΥΔΑΣΤΩΝ: OK. 857 00:46:49,140 --> 00:46:50,590 >> JASON Hirschhorn: Αυτό κάνει περισσότερο νόημα για μένα. 858 00:46:50,590 --> 00:46:51,670 Και; 859 00:46:51,670 --> 00:46:54,340 >> ΦΟΙΤΗΤΗΣ: Είπα, υποθέτω, int τελειώνει. 860 00:46:54,340 --> 00:46:55,870 >> JASON Hirschhorn: int τελειώνει. 861 00:46:55,870 --> 00:46:57,640 >> ΦΟΙΤΗΤΗΣ: Υποθέτω, n μείον 1, ή κάτι τέτοιο. 862 00:46:57,640 --> 00:46:59,100 Όπως, το τελευταίο στοιχείο. 863 00:46:59,100 --> 00:47:02,310 >> JASON Hirschhorn: Έτσι έγραψε, int αρχίζουν ίσων 0, τελεία και int 864 00:47:02,310 --> 00:47:04,320 τέλος ισούται με n μείον 1, τελεία. 865 00:47:04,320 --> 00:47:06,850 Έτσι, ουσιαστικά, αυτό που κάνουμε εδώ, 0 την πρώτη θέση. 866 00:47:06,850 --> 00:47:09,570 Και όπως γνωρίζουμε σε συστοιχίες, δεν πηγαίνουν μέχρι n, πάνε μέχρι n μείον 1. 867 00:47:09,570 --> 00:47:11,110 Έτσι έχουμε κάποια όρια του πίνακα μας. 868 00:47:11,110 --> 00:47:15,730 Και αυτά τα αρχικά όρια τυχαίνει να είναι τα αρχικά όρια του προβλήματός μας. 869 00:47:15,730 --> 00:47:16,640 OK. 870 00:47:16,640 --> 00:47:19,200 Έτσι ώστε να ακούγεται καλό. 871 00:47:19,200 --> 00:47:22,380 Στη συνέχεια, αν πάμε πίσω σε αυτή τη γραμμή, ενώ μήκος της λίστας είναι μεγαλύτερο από 0, 872 00:47:22,380 --> 00:47:24,752 τι, αντί της Ν, πρέπει βάζουμε εδώ; 873 00:47:24,752 --> 00:47:28,820 >> ΦΟΙΤΗΤΗΣ: Γράψτε τελειώνει μείον αρχή. 874 00:47:28,820 --> 00:47:34,780 >> JASON Hirschhorn: Ενώ τελειώνει μείον αρχίζοντας είναι μεγαλύτερη από 0; 875 00:47:34,780 --> 00:47:35,480 OK. 876 00:47:35,480 --> 00:47:37,730 Και θα μπορούσαμε, αν θέλαμε να κάνουν ότι λίγο καλύτερο, ό, τι 877 00:47:37,730 --> 00:47:38,980 άλλο θα μπορούσαμε να κάνουμε; 878 00:47:38,980 --> 00:47:41,650 879 00:47:41,650 --> 00:47:43,412 Αν θέλαμε να καθαρίσετε αυτός ο κώδικας επάνω ένα κομμάτι; 880 00:47:43,412 --> 00:47:46,716 881 00:47:46,716 --> 00:47:48,180 Πώς μπορούμε να απαλλαγούμε από το 0; 882 00:47:48,180 --> 00:47:51,560 883 00:47:51,560 --> 00:47:52,690 Αυτό είναι μόνο ένα ζήτημα στυλ. 884 00:47:52,690 --> 00:47:53,690 Είναι σωστή αυτή τη στιγμή. 885 00:47:53,690 --> 00:47:54,870 >> ΦΟΙΤΗΤΗΣ: Ending δεν ίση αρχή; 886 00:47:54,870 --> 00:47:55,740 >> JASON Hirschhorn: Μπορούμε να κάνουμε τι; 887 00:47:55,740 --> 00:47:56,730 >> [Παρεμβάλλοντας VOICES] 888 00:47:56,730 --> 00:47:57,330 >> ΦΟΙΤΗΤΗΣ: Ολοκληρώνεται είναι μεγαλύτερη; 889 00:47:57,330 --> 00:47:57,720 >> JASON Hirschhorn: Ναι. 890 00:47:57,720 --> 00:48:01,110 Μπορούμε να κάνουμε ακριβώς ενώ τέλος είναι μεγαλύτερη από αρχή. 891 00:48:01,110 --> 00:48:03,580 Δεξιά. 892 00:48:03,580 --> 00:48:06,240 Προσθέσαμε ξεκινώντας προς την άλλη πλευρά από αυτό, και ξεφορτώθηκε το 0. 893 00:48:06,240 --> 00:48:08,000 Έτσι, αυτό φαίνεται μόνο ένα λίγο πιο καθαρό κομμάτι. 894 00:48:08,000 --> 00:48:08,990 OK. 895 00:48:08,990 --> 00:48:11,460 Έτσι, ενώ το μήκος της λίστας είναι 0, γράψαμε ότι, ενώ τέλος είναι μεγαλύτερη 896 00:48:11,460 --> 00:48:12,240 από την έναρξη. 897 00:48:12,240 --> 00:48:19,840 Εμείς πάμε για να θέσει σε απαραίτητα μας άγκιστρα, και, στη συνέχεια, το πρώτο πράγμα που 898 00:48:19,840 --> 00:48:22,090 θέλουμε να κάνουμε είναι να εξετάσουμε τους σε μια μικρή λίστα. 899 00:48:22,090 --> 00:48:22,510 Μπορείτε; 900 00:48:22,510 --> 00:48:23,320 Μπορείς να μου δώσει το - 901 00:48:23,320 --> 00:48:26,460 >> ΦΟΙΤΗΤΗΣ: Αν παρένθεση στήριγμα πλατεία αξία - 902 00:48:26,460 --> 00:48:30,450 >> JASON Hirschhorn: Αν παρενθέσεις βραχίονα πλατεία αξία. 903 00:48:30,450 --> 00:48:33,210 >> ΦΟΙΤΗΤΗΣ: Τερματισμός διαιρούμενο δια του 2. 904 00:48:33,210 --> 00:48:33,952 >> JASON Hirschhorn: Ολοκληρώνεται; 905 00:48:33,952 --> 00:48:35,280 >> ΦΟΙΤΗΤΗΣ: Βλέπω ένα πρόβλημα με σας - 906 00:48:35,280 --> 00:48:35,750 >> JASON Hirschhorn: OK. 907 00:48:35,750 --> 00:48:39,150 Λοιπόν, κοιτάξτε στη μέση. 908 00:48:39,150 --> 00:48:41,226 Πώς μπορούμε να γνωρίζουμε ποια είναι η μέση είναι; 909 00:48:41,226 --> 00:48:42,450 Ναι. 910 00:48:42,450 --> 00:48:43,070 Έτσι, επιτρέψτε μου να διαγράψετε αυτόν τον κωδικό. 911 00:48:43,070 --> 00:48:46,360 Πώς μπορούμε να γνωρίζουμε ποια είναι η μέση είναι; 912 00:48:46,360 --> 00:48:48,003 Σε τίποτα, όταν έχετε την αρχή και το τέλος, πώς θα βρείτε 913 00:48:48,003 --> 00:48:48,876 η μέση; 914 00:48:48,876 --> 00:48:49,590 >> ΦΟΙΤΗΤΗΣ: Έχετε κατά μέσο όρο. 915 00:48:49,590 --> 00:48:51,820 >> ΦΟΙΤΗΤΗΣ: Μπορείτε να προσθέσετε μαζί και στη συνέχεια - 916 00:48:51,820 --> 00:48:53,150 >> JASON Hirschhorn: Προσθέστε τα μαζί και στη συνέχεια; 917 00:48:53,150 --> 00:48:54,090 >> ΦΟΙΤΗΤΗΣ: Και κατά μέσο όρο. 918 00:48:54,090 --> 00:48:55,050 Διαιρέσουμε με το 2. 919 00:48:55,050 --> 00:48:56,500 >> JASON Hirschhorn: Προσθέστε τα μαζί και διαιρούμε με το 2. 920 00:48:56,500 --> 00:48:59,400 Έτσι, int μέση ισούται; 921 00:48:59,400 --> 00:49:01,120 Tom, μπορείτε να το δώσει σε μένα; 922 00:49:01,120 --> 00:49:03,550 >> ΦΟΙΤΗΤΗΣ: Ξεκινώντας συν τελειώνει - 923 00:49:03,550 --> 00:49:04,950 >> JASON Hirschhorn: Αρχή συν τελειώνει. 924 00:49:04,950 --> 00:49:06,880 >> ΦΟΙΤΗΤΗΣ: Όλα, βραχίονα, διαιρείται δια 2. 925 00:49:06,880 --> 00:49:10,940 >> JASON Hirschhorn: Όλα, σε παρένθεση, διαιρείται δια 2. 926 00:49:10,940 --> 00:49:16,300 Έτσι, αυτό μου δίνει τη μέση τίποτα, να διορθώσει; 927 00:49:16,300 --> 00:49:18,980 >> ΦΟΙΤΗΤΗΣ: Θα πρέπει επίσης να στρογγυλοποιεί προς τα πάνω. 928 00:49:18,980 --> 00:49:19,990 >> JASON Hirschhorn: Τι να κάνετε Εννοώ, πρέπει να στρογγυλοποιεί προς τα πάνω; 929 00:49:19,990 --> 00:49:20,400 >> [Παρεμβάλλοντας VOICES] 930 00:49:20,400 --> 00:49:24,520 >> ΦΟΙΤΗΤΗΣ: Γιατί αν Είναι ένα περίεργο αριθμός, τότε είναι σαν - 931 00:49:24,520 --> 00:49:25,440 >> JASON Hirschhorn: Καλά, εντάξει. 932 00:49:25,440 --> 00:49:26,360 Έτσι θα μπορούσα να στρογγυλοποιεί προς τα πάνω. 933 00:49:26,360 --> 00:49:33,350 Αλλά αν είναι ένας περιττός αριθμός, 5, μπορώ λαμβάνοντας 1 μακριά από τη μέση. 934 00:49:33,350 --> 00:49:35,665 Ή αν είναι άρτιος αριθμός, μάλλον, ότι είναι η καλύτερη περίπτωση. 935 00:49:35,665 --> 00:49:39,600 Αν είναι 4, έχουμε μόνο 4, μπορώ να πάρω το πρώτο «μεσαίο», απόσπασμα, χωρίς εισαγωγικά ή 936 00:49:39,600 --> 00:49:41,760 η δεύτερη "μέση" ένα. 937 00:49:41,760 --> 00:49:46,390 Είτε θα μπορούσε να λειτουργήσει για μια δυαδική αναζήτηση, γι 'αυτό δεν πρέπει πραγματικά να το γύρο. 938 00:49:46,390 --> 00:49:48,640 Αλλά υπάρχει ένα άλλο πράγμα που πρέπει να εξετάσουμε σε αυτή τη γραμμή. 939 00:49:48,640 --> 00:49:50,530 Μπορεί να μην το συνειδητοποιούν ακόμα, αλλά θα επανέλθω σε αυτό. 940 00:49:50,530 --> 00:49:53,200 Επειδή αυτή η γραμμή στην πραγματικότητα εξακολουθούν να χρειάζεται ένα άλλο πράγμα. 941 00:49:53,200 --> 00:49:55,990 >> Αλλά μέχρι στιγμής, έχουμε γράψει τέσσερις γραμμές κώδικα. 942 00:49:55,990 --> 00:49:58,120 Έχουμε αρχή μας και τελειώνει δείκτες. 943 00:49:58,120 --> 00:50:01,320 Έχουμε βρόχο, ενώ μας, η οποία χαρτογραφεί άμεσα στο ψευδοκώδικα μας. 944 00:50:01,320 --> 00:50:05,790 Ψάχνουμε στη μέση που χαρτογραφεί απευθείας σε ψευδοκώδικα μας. 945 00:50:05,790 --> 00:50:09,070 Θα έλεγα ότι αυτό πηγαίνει στη μέση της λίστας, αυτή η γραμμή κώδικα. 946 00:50:09,070 --> 00:50:11,560 Και στη συνέχεια, όταν θα πάτε στη μέση του η λίστα, το επόμενο πράγμα που πρέπει να κάνουμε 947 00:50:11,560 --> 00:50:14,880 είναι να ελέγξετε αν η τιμή μας είναι εκεί για η pseudocode γράψαμε νωρίτερα. 948 00:50:14,880 --> 00:50:17,100 >> Επομένως, πώς θα ελέγξει αν η αξία μας είναι στην μέση της λίστας; 949 00:50:17,100 --> 00:50:17,300 Μπορείτε. 950 00:50:17,300 --> 00:50:18,511 Γιατί δεν το κάνεις αυτό; 951 00:50:18,511 --> 00:50:23,070 >> ΦΟΙΤΗΤΗΣ: Εάν η τιμή μας είναι στη μέση είναι ίση με 952 00:50:23,070 --> 00:50:24,592 ό, τι θέτουμε τον - 953 00:50:24,592 --> 00:50:26,190 Εννοώ ίσα ίσα για να - 954 00:50:26,190 --> 00:50:26,690 >> JASON Hirschhorn: It - 955 00:50:26,690 --> 00:50:27,940 OK. 956 00:50:27,940 --> 00:50:30,080 957 00:50:30,080 --> 00:50:32,170 >> ΦΟΙΤΗΤΗΣ: Δεν είμαι σίγουρος ποια είναι η μεταβλητή ψάχνουμε 958 00:50:32,170 --> 00:50:32,850 Για το γεγονός, είναι επειδή - 959 00:50:32,850 --> 00:50:33,330 >> [Παρεμβάλλοντας VOICES] 960 00:50:33,330 --> 00:50:34,520 >> ΦΟΙΤΗΤΗΣ: [δεν ακούγεται]. 961 00:50:34,520 --> 00:50:35,060 >> JASON Hirschhorn: Ακριβώς. 962 00:50:35,060 --> 00:50:37,260 Σύμφωνα με την δήλωση της συνάρτησης, ψάχνουμε για μια τιμή. 963 00:50:37,260 --> 00:50:39,760 Έτσι, ψάχνουμε για μια τιμή σε μια σειρά τιμών. 964 00:50:39,760 --> 00:50:41,080 Έτσι, είστε ακριβώς δεξιά. 965 00:50:41,080 --> 00:50:45,040 Θα κάνετε, αν βραχίονα αξία ανοικτή paren μέση έκλεισε ισούται με βραχίονα 966 00:50:45,040 --> 00:50:49,930 ισούται με την αξία, και εκεί μέσα τι πρέπει να κάνουμε; 967 00:50:49,930 --> 00:50:51,230 Αν η αξία μας είναι εκεί, τι Δεν πρέπει να κάνουμε; 968 00:50:51,230 --> 00:50:51,420 >> [Παρεμβάλλοντας VOICES] 969 00:50:51,420 --> 00:50:52,160 >> ΦΟΙΤΗΤΗΣ: Επιστροφή μηδέν. 970 00:50:52,160 --> 00:50:53,070 >> JASON Hirschhorn: Επιστροφή αλήθεια. 971 00:50:53,070 --> 00:50:54,790 >> ΦΟΙΤΗΤΗΣ: Επιστροφή αλήθεια. 972 00:50:54,790 --> 00:50:57,856 >> JASON Hirschhorn: Michael, Τι σημαίνει αυτή η γραμμή κάνει; 973 00:50:57,856 --> 00:51:01,105 >> ΦΟΙΤΗΤΗΣ: [δεν ακούγεται] το πρόγραμμα έχει τρέξει την πορεία του, και ότι είναι πάνω, και 974 00:51:01,105 --> 00:51:01,920 έχετε τι πρέπει να κάνετε; 975 00:51:01,920 --> 00:51:03,030 >> JASON Hirschhorn: Το πρόγραμμα ή τι; 976 00:51:03,030 --> 00:51:03,700 Σε αυτή την περίπτωση; 977 00:51:03,700 --> 00:51:04,210 >> ΣΠΟΥΔΑΣΤΩΝ: Η λειτουργία. 978 00:51:04,210 --> 00:51:05,170 >> JASON Hirschhorn: Η λειτουργία. 979 00:51:05,170 --> 00:51:08,420 Και έτσι, για να επιστρέψουν σε ό, τι ονομάζεται αυτό και δίνουν την αξία, αλήθεια. 980 00:51:08,420 --> 00:51:09,890 Ακριβώς δεξιά. 981 00:51:09,890 --> 00:51:10,170 Κύριο. 982 00:51:10,170 --> 00:51:12,035 Τι είναι ο τύπος επιστροφής από τις κύριες, Μάικλ; 983 00:51:12,035 --> 00:51:16,480 984 00:51:16,480 --> 00:51:17,150 >> ΦΟΙΤΗΤΗΣ: int, ακέραιος; 985 00:51:17,150 --> 00:51:18,080 >> JASON Hirschhorn: int, ακριβώς. 986 00:51:18,080 --> 00:51:18,680 Ένας ακέραιος. 987 00:51:18,680 --> 00:51:20,980 Αυτό ήταν μόνο μια ερώτηση για να βεβαιωθείτε ότι εσείς έχουν πάνω του. 988 00:51:20,980 --> 00:51:24,250 Τι σημαίνει αυτό συνήθως να επιστρέψουν, αν όλα τα πράγματα λειτουργούν καλά; 989 00:51:24,250 --> 00:51:24,520 >> ΣΠΟΥΔΑΣΤΩΝ: Μηδέν. 990 00:51:24,520 --> 00:51:24,820 >> JASON Hirschhorn: Μηδέν. 991 00:51:24,820 --> 00:51:25,430 Ακριβώς δεξιά. 992 00:51:25,430 --> 00:51:28,790 >> ΦΟΙΤΗΤΗΣ: Εάν αυτό ακριβώς επιστρέφει true, δεν υπάρχει καμία πληροφορία δίνεται 993 00:51:28,790 --> 00:51:30,675 σχετικά με το τι η - 994 00:51:30,675 --> 00:51:34,040 Ω, αυτό είναι ακριβώς λέγοντας ότι αξία είναι μέσα στον πίνακα. 995 00:51:34,040 --> 00:51:35,350 >> JASON Hirschhorn: Ακριβώς. 996 00:51:35,350 --> 00:51:38,080 Αυτό το πρόγραμμα δεν δίνει πληροφορίες πού ακριβώς είναι η αξία. 997 00:51:38,080 --> 00:51:41,850 Είναι μόνο λέγοντας, ναι, βρήκαμε αυτό, είτε όχι, εμείς δεν το βρείτε. 998 00:51:41,850 --> 00:51:42,990 Έτσι, αν ο αριθμός που βρέθηκαν, επιστρέφουν αλήθεια. 999 00:51:42,990 --> 00:51:45,500 Λοιπόν, στην πραγματικότητα μόλις κάναμε ότι πραγματικά γρήγορα με την εν λόγω μία γραμμή κώδικα. 1000 00:51:45,500 --> 00:51:47,500 Γι 'αυτό θα προχωρήσουμε αυτή τη γραμμή του ψευδοκώδικα. 1001 00:51:47,500 --> 00:51:50,045 >> ΦΟΙΤΗΤΗΣ: Δεν χρειαζόμαστε για να αλλάξετε τη σειρά; 1002 00:51:50,045 --> 00:51:52,830 Θα πρέπει να είναι τιμές, όχι την αξία, έτσι δεν είναι; 1003 00:51:52,830 --> 00:51:53,430 >> JASON Hirschhorn: Συγγνώμη. 1004 00:51:53,430 --> 00:51:54,010 Σας ευχαριστώ. 1005 00:51:54,010 --> 00:51:54,800 >> ΦΟΙΤΗΤΗΣ: Ναι. 1006 00:51:54,800 --> 00:51:55,850 >> JASON Hirschhorn: Αυτή η γραμμή θα πρέπει να είναι οι τιμές. 1007 00:51:55,850 --> 00:51:57,150 Ακριβώς δεξιά. 1008 00:51:57,150 --> 00:51:57,920 OK. 1009 00:51:57,920 --> 00:51:59,170 Έτσι έχουμε κοίταξε το μεσαίο λίστα. 1010 00:51:59,170 --> 00:52:00,790 Εάν ο αριθμός που βρέθηκαν return true. 1011 00:52:00,790 --> 00:52:04,470 Συνεχίζοντας με ψευδοκώδικα μας, αν μεσαίο είναι μεγαλύτερο, αναζήτηση αριστερά. 1012 00:52:04,470 --> 00:52:09,640 Είχα, λοιπόν, εδώ, εάν ο αριθμός υψηλότερα, αναζήτησης αριστερά. 1013 00:52:09,640 --> 00:52:12,700 1014 00:52:12,700 --> 00:52:14,462 Κωνσταντίνου, μπορεί να σας δώσει με αυτή τη γραμμή κώδικα; 1015 00:52:14,462 --> 00:52:17,240 1016 00:52:17,240 --> 00:52:23,520 >> ΦΟΙΤΗΤΗΣ: Εάν η τιμή της μέσης - 1017 00:52:23,520 --> 00:52:24,890 >> JASON Hirschhorn: Έτσι, αν η αξία - 1018 00:52:24,890 --> 00:52:28,890 αν είναι ανοιχτό paren τιμές βραχίονα μέση κλείσιμο παρένθεσης - 1019 00:52:28,890 --> 00:52:31,500 >> ΦΟΙΤΗΤΗΣ: Είναι μικρότερη από την αξία; 1020 00:52:31,500 --> 00:52:32,760 >> JASON Hirschhorn: Είναι λιγότερο από ό, τι. 1021 00:52:32,760 --> 00:52:33,800 >> ΦΟΙΤΗΤΗΣ: Λιγότερο από αξία. 1022 00:52:33,800 --> 00:52:34,060 >> JASON Hirschhorn: Αξία. 1023 00:52:34,060 --> 00:52:35,310 Λοιπόν, στην πραγματικότητα, θέλετε να ελέγξτε αν ο αριθμός - 1024 00:52:35,310 --> 00:52:38,310 1025 00:52:38,310 --> 00:52:38,490 Λυπάμαι. 1026 00:52:38,490 --> 00:52:39,140 Αυτή είναι μια μικρή σύγχυση. 1027 00:52:39,140 --> 00:52:43,920 Αλλά αλλιώς αν ο αριθμός στην μέση του καταλόγου είναι μεγαλύτερη. 1028 00:52:43,920 --> 00:52:45,170 >> ΦΟΙΤΗΤΗΣ: Ναι, εντάξει. 1029 00:52:45,170 --> 00:52:49,800 1030 00:52:49,800 --> 00:52:50,410 >> JASON Hirschhorn: Θα αλλάξει αυτό. 1031 00:52:50,410 --> 00:52:55,060 Αλλιώς, αν είναι υψηλότερη μέση, εμείς θέλετε να αναζητήσετε αριστερά, εντάξει; 1032 00:52:55,060 --> 00:52:57,310 Και τι κάνουμε μέσα αυτό, αν η κατάσταση; 1033 00:52:57,310 --> 00:53:03,660 1034 00:53:03,660 --> 00:53:07,510 >> ΦΟΙΤΗΤΗΣ: Μπορώ να κάνω μια μικρή αλλαγή η κατάσταση, το αλλάξετε σε άλλο εάν; 1035 00:53:07,510 --> 00:53:08,380 >> JASON Hirschhorn: Else εάν; 1036 00:53:08,380 --> 00:53:09,270 OK. 1037 00:53:09,270 --> 00:53:12,840 Έτσι, αυτός ο κώδικας θα εκτελέσει περίπου το ίδιο. 1038 00:53:12,840 --> 00:53:18,620 Αλλά το ωραίο πράγμα για τη χρησιμοποίηση if, else if, else if ή if, else if, else 1039 00:53:18,620 --> 00:53:22,320 σημαίνει ότι μόνο ένα από αυτά πρόκειται να να ελέγχεται, όχι οι τρεις από αυτούς, 1040 00:53:22,320 --> 00:53:23,290 δυνητικά. 1041 00:53:23,290 --> 00:53:25,530 Και ότι λίγο κάνει καλύτερο στον υπολογιστή που είναι 1042 00:53:25,530 --> 00:53:26,670 τρέχει το πρόγραμμά σας. 1043 00:53:26,670 --> 00:53:27,620 >> Έτσι, [; Κωνσταντίνου,?] 1044 00:53:27,620 --> 00:53:31,330 είμαστε μέσα αυτή τη γραμμή, αλλιώς αν οι τιμές, βραχίονα μέση κλείσιμο παρένθεσης 1045 00:53:31,330 --> 00:53:32,260 είναι μεγαλύτερη από την τιμή. 1046 00:53:32,260 --> 00:53:33,150 Τι πρέπει να κάνουμε; 1047 00:53:33,150 --> 00:53:33,970 Πρέπει να ψάξετε το αριστερό. 1048 00:53:33,970 --> 00:53:35,220 Πώς θα το κάνουμε αυτό; 1049 00:53:35,220 --> 00:53:46,960 1050 00:53:46,960 --> 00:53:48,720 Πάω να σας δώσω μια αρχή. 1051 00:53:48,720 --> 00:53:52,210 >> Έχουμε αυτά τα δύο πράγματα που ονομάζεται αρχίζει και τελειώνει. 1052 00:53:52,210 --> 00:53:57,340 Λοιπόν, τι πρέπει να συμβεί στην αρχή; 1053 00:53:57,340 --> 00:53:59,640 Αν θέλετε να αναζητήσετε το αριστερό του κατάλογο, θα έχουμε την τρέχουσα αρχή μας. 1054 00:53:59,640 --> 00:54:01,080 Τι πρέπει να κάνουμε; 1055 00:54:01,080 --> 00:54:04,220 >> ΦΟΙΤΗΤΗΣ: Θέτουμε την αρχή με μέση συν 1. 1056 00:54:04,220 --> 00:54:05,120 >> JASON Hirschhorn: Έτσι, αν είμαστε ψάχνοντας το αριστερό; 1057 00:54:05,120 --> 00:54:06,250 >> ΦΟΙΤΗΤΗΣ: Συγγνώμη, μέση μείον - 1058 00:54:06,250 --> 00:54:11,310 οπότε η κατάληξη θα είναι μέσης μείον 1 και τις αρχές - 1059 00:54:11,310 --> 00:54:12,450 >> JASON Hirschhorn: Και τι συμβαίνει στην αρχή; 1060 00:54:12,450 --> 00:54:13,210 >> ΦΟΙΤΗΤΗΣ: Παραμένει το ίδιο. 1061 00:54:13,210 --> 00:54:14,120 >> JASON Hirschhorn: Έτσι, η έννοια παραμένει η ίδια. 1062 00:54:14,120 --> 00:54:16,040 Αν ψάχνετε το αριστερό, είμαστε χρησιμοποιώντας την ίδια αρχή - 1063 00:54:16,040 --> 00:54:16,860 ακριβώς δεξιά. 1064 00:54:16,860 --> 00:54:17,870 Και η κατάληξη; 1065 00:54:17,870 --> 00:54:19,390 Συγγνώμη, τι κάνει το λήγει ίσα και πάλι; 1066 00:54:19,390 --> 00:54:20,750 >> ΦΟΙΤΗΤΗΣ: Μέσης μείον 1. 1067 00:54:20,750 --> 00:54:21,620 >> JASON Hirschhorn Μέσης μείον 1. 1068 00:54:21,620 --> 00:54:23,470 Τώρα, γιατί μείον 1, όχι μόνο μέση; 1069 00:54:23,470 --> 00:54:32,870 1070 00:54:32,870 --> 00:54:35,570 >> ΣΠΟΥΔΑΣΤΩΝ: Η μέση είναι έξω από το εικόνα ήδη, γιατί είχαμε 1071 00:54:35,570 --> 00:54:36,700 ελεγχθεί ότι είναι έξω; 1072 00:54:36,700 --> 00:54:37,630 >> JASON Hirschhorn: Αυτό είναι ακριβώς δεξιά. 1073 00:54:37,630 --> 00:54:38,580 Η μέση είναι έξω από την εικόνα. 1074 00:54:38,580 --> 00:54:39,800 Έχουμε ήδη ελεγχθεί από τη μέση. 1075 00:54:39,800 --> 00:54:44,730 Έτσι, δεν θέλουμε "στη μέση", απόσπασμα unquote, να συνεχίσει να είναι στην 1076 00:54:44,730 --> 00:54:46,110 array ότι ψάχνουμε. 1077 00:54:46,110 --> 00:54:47,670 Έτσι, αυτό είναι φανταστικό. 1078 00:54:47,670 --> 00:54:50,670 >> Αλλιώς αν οι τιμές βραχίονα μέση είναι μεγαλύτερη από την αξία που έληξε ισούται 1079 00:54:50,670 --> 00:54:51,920 μέση μείον 1. 1080 00:54:51,920 --> 00:54:55,060 1081 00:54:55,060 --> 00:54:57,340 Jeff, τι γίνεται με αυτήν την τελευταία γραμμή; 1082 00:54:57,340 --> 00:54:58,590 >> ΣΠΟΥΔΑΣΤΩΝ: Else. 1083 00:54:58,590 --> 00:55:02,486 1084 00:55:02,486 --> 00:55:06,000 Αξίες μέση είναι μικρότερη από την αξία; 1085 00:55:06,000 --> 00:55:07,570 >> JASON Hirschhorn: Θα θα μου δώσεις άλλο. 1086 00:55:07,570 --> 00:55:09,310 Έτσι, αν δεν μου δώσεις - 1087 00:55:09,310 --> 00:55:12,270 >> ΦΟΙΤΗΤΗΣ: Άρα λοιπόν αρχίζουν θα είναι μέσης συν 1. 1088 00:55:12,270 --> 00:55:16,100 1089 00:55:16,100 --> 00:55:19,070 >> JASON Hirschhorn: Ξεκινώντας ισούται μεσαία συν 1, και πάλι, για το ίδιο 1090 00:55:19,070 --> 00:55:20,820 λόγο ότι ο Κωνσταντίνος μας έδωσε νωρίτερα. 1091 00:55:20,820 --> 00:55:24,280 Και στο τέλος, ο οποίος δεν έχει δώσει με μια γραμμή κώδικα ακόμα; 1092 00:55:24,280 --> 00:55:26,600 Επιστροφή ψευδείς, Aleha, τι γράφουμε εδώ; 1093 00:55:26,600 --> 00:55:28,590 >> ΦΟΙΤΗΤΗΣ: Επιστροφή ψευδείς. 1094 00:55:28,590 --> 00:55:29,320 >> JASON Hirschhorn: Επιστροφή ψευδείς. 1095 00:55:29,320 --> 00:55:33,340 Και πρέπει να το κάνουμε αυτό, γιατί αν δεν το βρείτε, θα πρέπει να πούμε ότι 1096 00:55:33,340 --> 00:55:34,080 δεν το βρείτε. 1097 00:55:34,080 --> 00:55:36,270 Και είπαμε ότι πρόκειται να επιστρέψει μια bool, οπότε σίγουρα έχουμε να επιστρέψετε 1098 00:55:36,270 --> 00:55:38,150 κάπου μια bool. 1099 00:55:38,150 --> 00:55:42,590 >> Οπότε ας εκτελέσετε αυτόν τον κώδικα. 1100 00:55:42,590 --> 00:55:44,520 Είμαι πραγματικά πρόκειται να - 1101 00:55:44,520 --> 00:55:45,930 έτσι είμαστε στο τερματικό. 1102 00:55:45,930 --> 00:55:47,230 Θα καθαρίσει το παράθυρό μας. 1103 00:55:47,230 --> 00:55:49,270 Ας κάνουν όλες. 1104 00:55:49,270 --> 00:55:50,340 Βρήκαμε ότι υπάρχει ένα λάθος. 1105 00:55:50,340 --> 00:55:54,280 Υπάρχει ένα σφάλμα στη γραμμή 15, η οποία αναμένεται ερωτηματικό στο τέλος της 1106 00:55:54,280 --> 00:55:54,890 δήλωση. 1107 00:55:54,890 --> 00:55:56,454 Έτσι, αυτό που έκανε ξεχάσω; 1108 00:55:56,454 --> 00:55:57,230 >> ΣΠΟΥΔΑΣΤΩΝ: Η άνω τελεία. 1109 00:55:57,230 --> 00:56:00,200 >> JASON Hirschhorn: Άνω τελεία μέχρι εδώ. 1110 00:56:00,200 --> 00:56:00,950 Νομίζω ότι ήταν κώδικα του Τομ. 1111 00:56:00,950 --> 00:56:01,870 Έτσι, ο Tom, [δεν ακούγεται]. 1112 00:56:01,870 --> 00:56:03,120 Αστειεύομαι. 1113 00:56:03,120 --> 00:56:05,010 1114 00:56:05,010 --> 00:56:07,310 Ας μην κάνουν όλες και πάλι. 1115 00:56:07,310 --> 00:56:10,180 >> ΦΟΙΤΗΤΗΣ: Τι κατάλογο Dropbox θα πρέπει να είμαστε σε αυτό; 1116 00:56:10,180 --> 00:56:11,345 >> JASON Hirschhorn: Έτσι, μπορείτε να Απλά προσέξτε για αυτό το κομμάτι. 1117 00:56:11,345 --> 00:56:16,380 Αλλά και πάλι, αν θέλετε να μετακινήσετε αυτό κωδικοποίηση σε κατάλογο pset3 σας για να δοκιμάσετε 1118 00:56:16,380 --> 00:56:17,050 έξω, αυτό είναι ό, τι έκανα. 1119 00:56:17,050 --> 00:56:18,600 Αν θα παρατηρήσετε εδώ - Λυπάμαι, καλή ερώτηση. 1120 00:56:18,600 --> 00:56:19,460 >> [? LS,?] 1121 00:56:19,460 --> 00:56:24,700 Έχω εδώ ο κώδικας ΡΓΝϋ.Ο από τον κώδικα διανομή αυτής της εβδομάδας. 1122 00:56:24,700 --> 00:56:26,300 Έχω helpers.h. 1123 00:56:26,300 --> 00:56:30,010 Έχω ένα αρχείο Μάρκα που έχω πραγματικά επεξεργαστεί ένα κομμάτι για να συμπεριλάβει αυτά τα νέα 1124 00:56:30,010 --> 00:56:30,710 αρχεία γράφουμε. 1125 00:56:30,710 --> 00:56:34,120 Όλα του κώδικα αυτού θα είναι διαθέσιμα, δεν ο κωδικός της διανομής, αλλά και το νέο 1126 00:56:34,120 --> 00:56:39,510 Κάντε το αρχείο, το νέο αρχείο θα helpers.h είναι διαθέσιμα στο διαδίκτυο για download. 1127 00:56:39,510 --> 00:56:41,800 Και πάλι, οπότε αυτά είναι τα επιπλέον κωδικούς που έχουμε. 1128 00:56:41,800 --> 00:56:46,130 >> Έτσι κάνουν όλα, κατ 'αυτή τη γραμμή, κάνει βρείτε, δυαδική, η επιλογή φούσκα - οι μάρκες 1129 00:56:46,130 --> 00:56:50,930 και τα τρία από αυτά και συγκεντρώνει σε αυτό το εκτελέσιμο κώδικα find. 1130 00:56:50,930 --> 00:56:54,090 Έτσι, γενικά, δεν θέλουμε με κατ 'ευθείαν στο check50. 1131 00:56:54,090 --> 00:56:57,580 Θέλουμε να εκτελέσετε κάποιες δοκιμές για τη δική μας. 1132 00:56:57,580 --> 00:57:11,750 Αλλά μόνο έτσι μπορούμε να επισπεύσουμε τη λίγο, check50 2013 pset3.find θα περάσει 1133 00:57:11,750 --> 00:57:14,630 στο helpers.c-- κακό μου. 1134 00:57:14,630 --> 00:57:16,050 >> Δεν έχω αυτό το δικαίωμα τώρα. 1135 00:57:16,050 --> 00:57:20,670 Έτσι, είμαστε πραγματικά πρόκειται να την εκτέλεση του κώδικα για την πραγματική. 1136 00:57:20,670 --> 00:57:23,570 Usage.find /, ξέρετε τι σημαίνει αυτό; 1137 00:57:23,570 --> 00:57:25,970 >> ΦΟΙΤΗΤΗΣ: Χρειάζεται ένα δεύτερο γραμμή εντολών σε αυτό. 1138 00:57:25,970 --> 00:57:26,980 >> JASON Hirschhorn: χρειάζομαι μια δεύτερη γραμμή εντολών. 1139 00:57:26,980 --> 00:57:30,640 Και σύμφωνα με τις προδιαγραφές, θα πρέπει να εισέλθουν αυτό που ψάχνετε. 1140 00:57:30,640 --> 00:57:33,750 Ας ρίξουμε μια ματιά για το 42. 1141 00:57:33,750 --> 00:57:37,030 Θα το κρατήσει σε ταξινομημένη, γιατί Δεν έχω γράψει μια λειτουργία ταξινόμησης ακόμα - 1142 00:57:37,030 --> 00:57:41,830 42, 43, 44. 1143 00:57:41,830 --> 00:57:46,240 >> Και Ελέγχου D δεν βρίσκουν το βελόνα στα άχυρα. 1144 00:57:46,240 --> 00:57:46,505 Αυτό είναι κακό. 1145 00:57:46,505 --> 00:57:47,200 Είναι σίγουρα εκεί. 1146 00:57:47,200 --> 00:57:48,090 Ας δοκιμάσουμε κάτι άλλο. 1147 00:57:48,090 --> 00:57:49,860 Ίσως αυτό συμβαίνει γιατί έβαλα αυτό στην αρχή. 1148 00:57:49,860 --> 00:57:54,490 >> Ας κάνουμε 41, 42, 43. 1149 00:57:54,490 --> 00:57:55,012 Εκεί πάμε. 1150 00:57:55,012 --> 00:57:56,400 Αυτό το βρήκα. 1151 00:57:56,400 --> 00:58:00,040 Ας το θέσω στο τέλος τώρα, απλά ώστε να μπορούμε να είναι διεξοδική - 1152 00:58:00,040 --> 00:58:03,580 40, 41, 42. 1153 00:58:03,580 --> 00:58:05,760 Δεν βρήκατε τη βελόνα. 1154 00:58:05,760 --> 00:58:07,550 Γι 'αυτό το ανέφερα νωρίτερα. 1155 00:58:07,550 --> 00:58:08,980 Δυστυχώς, ήξερα αυτό επρόκειτο να συμβεί. 1156 00:58:08,980 --> 00:58:11,490 >> Αλλά για παιδαγωγικούς σκοπούς, είναι καλό να το εξερευνήσουν. 1157 00:58:11,490 --> 00:58:12,990 Δεν λειτουργεί. 1158 00:58:12,990 --> 00:58:16,020 Για κάποιο λόγο, δεν μπορεί να το βρει. 1159 00:58:16,020 --> 00:58:18,970 Ξέρουμε τι είναι εκεί, αλλά δεν το βρίσκουν. 1160 00:58:18,970 --> 00:58:24,140 Έτσι, ένα πράγμα που μπορούμε να κάνουμε είναι να περάσουν GDB να το βρείτε, αλλά κάνει κανείς, 1161 00:58:24,140 --> 00:58:27,850 χωρίς να περάσει από GDB, έχουν αίσθηση για το πού είμαστε μαντάρα; 1162 00:58:27,850 --> 00:58:28,480 [? Madu; ?] 1163 00:58:28,480 --> 00:58:30,960 >> ΦΟΙΤΗΤΗΣ: Νομίζω ότι θα μπορούσε να είναι όταν τελειώνει είναι ίσο με αρχή, και αυτό είναι 1164 00:58:30,960 --> 00:58:33,090 μόνο μια λίστα με ένα στοιχείο. 1165 00:58:33,090 --> 00:58:35,560 Στη συνέχεια, αγνοεί απλά αντί του πραγματικά τον έλεγχο. 1166 00:58:35,560 --> 00:58:36,940 >> JASON Hirschhorn: Αυτό είναι ακριβώς δεξιά. 1167 00:58:36,940 --> 00:58:41,110 Όταν τέλος ισούται με αρχή, εμείς εξακολουθούν να έχουν ένα στοιχείο στη λίστα μας; 1168 00:58:41,110 --> 00:58:42,480 >> ΦΟΙΤΗΤΗΣ: Ναι. 1169 00:58:42,480 --> 00:58:45,450 >> JASON Hirschhorn: Ναι, στην πραγματικότητα, έχουν ένα και μόνο ένα στοιχείο. 1170 00:58:45,450 --> 00:58:50,500 Και αυτό πιθανότατα θα συμβεί όταν, ανά τον κώδικα που δοκιμάσαμε, τώρα βρισκόμαστε στην 1171 00:58:50,500 --> 00:58:54,640 μπροστά από άχυρα ή το τέλος του άχυρα. 1172 00:58:54,640 --> 00:58:56,000 Αυτός είναι όπου αρχή και τέλος πρόκειται να ίση 1173 00:58:56,000 --> 00:58:57,820 ένα, με δυαδική αναζήτηση. 1174 00:58:57,820 --> 00:59:01,440 Έτσι, σε αυτές τις δύο περιπτώσεις δεν λειτούργησε, γιατί τελειώνει ήταν ίση με αρχή. 1175 00:59:01,440 --> 00:59:06,030 >> Αλλά αν τελειώνει είναι ίση με αρχή, αυτός ο βρόχος while εκτελέσει; 1176 00:59:06,030 --> 00:59:06,390 Δεν το κάνει. 1177 00:59:06,390 --> 00:59:08,660 Και θα μπορούσαμε να ελεγχθεί ότι και πάλι μέσω του GDB. 1178 00:59:08,660 --> 00:59:14,000 Λοιπόν, πώς μπορούμε να διορθώσετε αυτό τον κωδικό, επειδή όταν ενώ τέλος είναι ίσο με 1179 00:59:14,000 --> 00:59:16,070 αρχή, θέλουμε και αυτό while loop για να τρέξει. 1180 00:59:16,070 --> 00:59:18,620 >> Οπότε τι κώδικα μπορούμε να κάνουμε με τη γραμμή 18; 1181 00:59:18,620 --> 00:59:21,060 >> ΦΟΙΤΗΤΗΣ: [δεν ακούγεται] είναι μεγαλύτερη από ή ίσο με. 1182 00:59:21,060 --> 00:59:21,700 >> JASON Hirschhorn: Ακριβώς δεξιά. 1183 00:59:21,700 --> 00:59:24,600 Ενώ η κατάληξη είναι μεγαλύτερη από ό, τι ή ίση με αρχή. 1184 00:59:24,600 --> 00:59:27,300 Οπότε τώρα, φροντίστε να πάρετε ότι γωνιά περίπτωση στο τέλος. 1185 00:59:27,300 --> 00:59:27,870 Και ας δούμε. 1186 00:59:27,870 --> 00:59:29,560 Ας τρέξουμε μία ακόμη φορά. 1187 00:59:29,560 --> 00:59:31,266 >> Ας κάνουμε όλοι. 1188 00:59:31,266 --> 00:59:33,910 Και πάλι, θα πρέπει απλά να ακολουθήστε μαζί εδώ. 1189 00:59:33,910 --> 00:59:36,280 Βρείτε 41 αυτή τη φορά. 1190 00:59:36,280 --> 00:59:37,360 Απλά κρατήστε το σύμφωνο. 1191 00:59:37,360 --> 00:59:38,210 >> Βρείτε 42. 1192 00:59:38,210 --> 00:59:38,930 Ας το θέσω στην αρχή - 1193 00:59:38,930 --> 00:59:41,630 42, 43, 44. 1194 00:59:41,630 --> 00:59:42,860 Το βρήκαμε. 1195 00:59:42,860 --> 00:59:47,710 Έτσι, αυτό ήταν πράγματι η αλλαγή έπρεπε να κάνουν. 1196 00:59:47,710 --> 00:59:51,090 >> Αυτό ήταν πολύ κωδικοποίησης που ακριβώς έκανε, δυαδική αναζήτηση. 1197 00:59:51,090 --> 00:59:55,760 Μήπως κάποιος έχει οποιεσδήποτε ερωτήσεις πρίν Θα προχωρήσουμε σε γραμμές γράψαμε 1198 00:59:55,760 --> 00:59:58,750 δυαδική αναζήτηση ή πώς καταλάβαμε τι κάναμε καταλάβω; 1199 00:59:58,750 --> 01:00:01,900 1200 01:00:01,900 --> 01:00:06,270 Πριν προχωρήσουμε, θα ήθελα επίσης να επισημάνω έξω που σε μεγάλο βαθμό, θα χαρτογραφηθεί 1201 01:00:06,270 --> 01:00:09,300 μας ψευδο-κώδικα ενός έως ένα πάνω μας κώδικα. 1202 01:00:09,300 --> 01:00:11,550 >> Εμείς είχαμε αυτό το δύσκολο πράγμα να καταλάβω με το 1203 01:00:11,550 --> 01:00:12,890 αρχίζει και τελειώνει. 1204 01:00:12,890 --> 01:00:17,380 Αλλά δεν είχε καταλάβει ότι έξω, θα είχε γράψει λίγο πολύ το 1205 01:00:17,380 --> 01:00:20,740 πανομοιότυπο κώδικα, εκτός αυτές οι δύο πρώτες γραμμές. 1206 01:00:20,740 --> 01:00:23,380 Και τότε θα έχουν συνειδητοποιήσει όταν θα έκανε τους ελέγχους και τις περιπτώσεις που 1207 01:00:23,380 --> 01:00:24,840 χρειάζεστε κάτι άλλο. 1208 01:00:24,840 --> 01:00:28,510 Έτσι ακόμα κι αν είχε ακολουθηθεί μας ψευδο-κώδικα γραμμή προς γραμμή, θα είχατε 1209 01:00:28,510 --> 01:00:31,130 πάρει όλα εκτός από δύο γραμμές κώδικα που απαιτούνται για να γράψει. 1210 01:00:31,130 --> 01:00:33,900 >> Και θα ήμουν πρόθυμος να στοιχηματίσει ότι εσείς θα έχουν όλοι καταλάβει ότι έξω 1211 01:00:33,900 --> 01:00:37,940 αρκετά γρήγορα, που χρειάζεται για να τεθεί κάποιο είδος δείκτη εκεί για να καταλάβω 1212 01:00:37,940 --> 01:00:39,190 πού ήσουν. 1213 01:00:39,190 --> 01:00:41,540 1214 01:00:41,540 --> 01:00:44,550 Αυτό πάλι, είναι η δύναμη του να κάνει ψευδο-κώδικα μπροστά από το χρόνο. 1215 01:00:44,550 --> 01:00:47,310 Έτσι, μπορούμε να κάνουμε τη λογική πρώτα, και στη συνέχεια μπορούμε να ανησυχείτε για τη σύνταξη. 1216 01:00:47,310 --> 01:00:51,470 >> Αν είχαμε ήδη σύγχυση σχετικά με τη λογική ενώ προσπαθεί να γράψει τον κώδικα σε C, 1217 01:00:51,470 --> 01:00:53,110 θα είχαμε πάρει όλα άνω-κάτω. 1218 01:00:53,110 --> 01:00:56,340 Και τότε θα ήμασταν ερωτήσεις σχετικά με λογική και τη σύνταξη και συγκερασμό 1219 01:00:56,340 --> 01:00:57,320 όλα αυτά μαζί. 1220 01:00:57,320 --> 01:01:02,170 Και θα είχαμε πάρει τα χαμένα σε ό, τι μπορεί να γίνει γρήγορα ένα 1221 01:01:02,170 --> 01:01:04,000 πολύ δύσκολο πρόβλημα. 1222 01:01:04,000 --> 01:01:08,680 Έτσι, ας προχωρήσουμε τώρα να ταξινομήσετε επιλογής. 1223 01:01:08,680 --> 01:01:10,760 >> Έχουμε 20 λεπτά για. 1224 01:01:10,760 --> 01:01:14,130 Έτσι έχω την αίσθηση ότι δεν θα είναι σε θέση να περάσει όλες είδος επιλογής 1225 01:01:14,130 --> 01:01:15,940 και bubble sort. 1226 01:01:15,940 --> 01:01:20,670 Αλλά ας τουλάχιστον προσπάθεια για να τελειώσει το είδος επιλογής. 1227 01:01:20,670 --> 01:01:23,540 Έτσι εφαρμοστεί η επιλογή ταξινόμησης χρησιμοποιώντας το μετά από δήλωση της συνάρτησης. 1228 01:01:23,540 --> 01:01:27,530 >> Και πάλι, αυτό λαμβάνεται από το πρόβλημα που προδιαγραφές. 1229 01:01:27,530 --> 01:01:31,560 Int τιμές είναι παρένθεση, είναι μια σειρά ακεραίων. 1230 01:01:31,560 --> 01:01:33,490 Και int.n είναι το μέγεθος της εν λόγω συστοιχίας. 1231 01:01:33,490 --> 01:01:36,840 Η επιλογή του είδους θα για να ταξινομήσετε αυτό το array. 1232 01:01:36,840 --> 01:01:43,580 >> Έτσι, κάθε νοητικό μοντέλο μας της επιλογής ταξινόμησης, τραβάμε το - 1233 01:01:43,580 --> 01:01:47,720 Πρώτα, θα περάσουν από τη λίστα, την πρώτη χρόνο, τον μικρότερο αριθμό, 1234 01:01:47,720 --> 01:01:52,860 το βάζουμε στην αρχή, βρείτε το δεύτερο μικρότερος αριθμός, το έθεσε στο 1235 01:01:52,860 --> 01:01:56,380 δεύτερη θέση, αν θέλουμε να ταξινόμησης σε αύξουσα σειρά. 1236 01:01:56,380 --> 01:01:58,440 Δεν είμαι αναγκάζοντάς σας να γράψετε ψευδο-κώδικα τώρα. 1237 01:01:58,440 --> 01:02:01,350 >> Αλλά πριν το κάνουμε τον κώδικα ως τάξη σε πέντε λεπτά, πρόκειται να γράψω 1238 01:02:01,350 --> 01:02:03,550 ψευδο-κώδικα έτσι έχουμε κάποια αίσθηση για το πού θα πάμε. 1239 01:02:03,550 --> 01:02:05,630 Έτσι, προσπαθούν να γράψουν ψευδο-κώδικα για τη δική σας. 1240 01:02:05,630 --> 01:02:08,610 Και στη συνέχεια να προσπαθήσει να μετατρέψει ότι ψευδο-κώδικα στον κώδικα. 1241 01:02:08,610 --> 01:02:10,740 Εμείς θα κάνουμε ότι ως ομάδα σε πέντε λεπτά. 1242 01:02:10,740 --> 01:02:32,560 1243 01:02:32,560 --> 01:02:33,895 >> Και φυσικά, επιτρέψτε μου να ξέρω αν έχετε απορίες. 1244 01:02:33,895 --> 01:03:56,738 1245 01:03:56,738 --> 01:03:58,230 >> ΦΟΙΤΗΤΗΣ: Αυτό είναι; 1246 01:03:58,230 --> 01:04:00,280 >> JASON Hirschhorn: Δείτε πόσο μακριά μπορείτε μπορεί να πάρει σε δύο λεπτά. 1247 01:04:00,280 --> 01:04:01,790 Καταλαβαίνω ότι δεν θα να είναι σε θέση να τελειώσει. 1248 01:04:01,790 --> 01:04:03,050 Αλλά εμείς θα πάμε πάνω από αυτό ως ομάδα. 1249 01:04:03,050 --> 01:04:57,830 1250 01:04:57,830 --> 01:05:00,630 >> Είστε όλοι κωδικοποίησης έτσι [δεν ακούγεται], έτσι είμαι Συγγνώμη για παύση τι κάνεις. 1251 01:05:00,630 --> 01:05:02,530 Αλλά ας πάμε μέσα από αυτό ως ομάδα. 1252 01:05:02,530 --> 01:05:07,590 Και πάλι, δυαδική αναζήτηση, θα δώσει σε όλους Θέλω ένα, αν όχι περισσότερες γραμμές κώδικα. 1253 01:05:07,590 --> 01:05:08,530 Σας ευχαριστώ γι 'αυτό. 1254 01:05:08,530 --> 01:05:11,730 Εμείς πάμε να κάνουμε το ίδιο πράγμα εδώ, ο κώδικας μαζί ως ομάδα. 1255 01:05:11,730 --> 01:05:15,170 >> Έτσι, το είδος επιλογής - ας γράψουμε κάποια γρήγορη ψευδο-κώδικα. 1256 01:05:15,170 --> 01:05:20,380 Ανά νοητικό μοντέλο, μπορεί κάποιος να μου δώσει η πρώτη γραμμή της ψευδο-κώδικα, παρακαλώ; 1257 01:05:20,380 --> 01:05:23,000 1258 01:05:23,000 --> 01:05:24,270 Τι θέλω να κάνω; 1259 01:05:24,270 --> 01:05:27,070 >> ΦΟΙΤΗΤΗΣ: Ενώ ο κατάλογος είναι εκτός λειτουργίας. 1260 01:05:27,070 --> 01:05:30,630 >> JASON Hirschhorn: OK, ενώ ο κατάλογος είναι εκτός λειτουργίας. 1261 01:05:30,630 --> 01:05:33,540 Και τι εννοείς "out of order;" 1262 01:05:33,540 --> 01:05:34,960 >> ΦΟΙΤΗΤΗΣ: Ενώ [δεν ακούγεται] 1263 01:05:34,960 --> 01:05:36,210 δεν έχει ταξινομηθεί. 1264 01:05:36,210 --> 01:05:38,460 1265 01:05:38,460 --> 01:05:40,290 >> JASON Hirschhorn: Ενώ ο κατάλογος είναι εκτός λειτουργίας, τι κάνουμε; 1266 01:05:40,290 --> 01:05:44,200 Δώσε μου τη δεύτερη γραμμή, παρακαλώ, Μάρκους. 1267 01:05:44,200 --> 01:05:47,186 >> ΦΟΙΤΗΤΗΣ: Έτσι βρείτε την επόμενη μικρότερο αριθμό. 1268 01:05:47,186 --> 01:05:49,000 Αυτό θα εσοχή. 1269 01:05:49,000 --> 01:05:55,140 >> JASON Hirschhorn: Έτσι βρείτε το αμέσως μικρότερο αριθμό. 1270 01:05:55,140 --> 01:05:56,460 Και τότε κάποιος άλλος; 1271 01:05:56,460 --> 01:06:01,030 Μόλις βρούμε την επόμενη μικρότερη αριθμό, τι θα κάνουμε; 1272 01:06:01,030 --> 01:06:03,010 Πάω να πω βρείτε το μικρότερο αριθμό. 1273 01:06:03,010 --> 01:06:04,820 Αυτό είναι που θέλουμε να κάνουμε. 1274 01:06:04,820 --> 01:06:06,210 >> Έτσι, βρείτε το μικρότερο αριθμό. 1275 01:06:06,210 --> 01:06:08,061 Τότε τι κάνουμε; 1276 01:06:08,061 --> 01:06:09,480 >> ΦΟΙΤΗΤΗΣ: [δεν ακούγεται] στην αρχή. 1277 01:06:09,480 --> 01:06:10,680 >> JASON Hirschhorn: Συγγνώμη; 1278 01:06:10,680 --> 01:06:12,700 >> ΦΟΙΤΗΤΗΣ: Τοποθετήστε το στο ξεκινώντας από τη λίστα. 1279 01:06:12,700 --> 01:06:18,540 >> JASON Hirschhorn: Γι 'αυτό τοποθετήστε σε η αρχή της λίστας. 1280 01:06:18,540 --> 01:06:20,140 Και τι θα κάνουμε με το πράγμα ότι ήταν στην αρχή 1281 01:06:20,140 --> 01:06:20,830 του καταλόγου, έτσι δεν είναι; 1282 01:06:20,830 --> 01:06:21,910 Είμαστε αντικατάσταση κάτι. 1283 01:06:21,910 --> 01:06:23,130 Έτσι από πού να θέσει αυτό; 1284 01:06:23,130 --> 01:06:24,120 Ναι, η Άννα; 1285 01:06:24,120 --> 01:06:25,520 >> ΦΟΙΤΗΤΗΣ: Όταν το μικρότερο αριθμός ήταν; 1286 01:06:25,520 --> 01:06:32,530 >> JASON Hirshhorn: Έτσι βάλτε την αρχή του καταλόγου, όπου η 1287 01:06:32,530 --> 01:06:35,180 μικρότερος αριθμός ήταν. 1288 01:06:35,180 --> 01:06:38,510 Έτσι, ενώ ο κατάλογος είναι εκτός λειτουργίας, να βρουν ο μικρότερος αριθμός, τοποθετήστε το 1289 01:06:38,510 --> 01:06:40,630 η αρχή της λίστας, να θέσει το αρχίζοντας από τον κατάλογο, όπου η 1290 01:06:40,630 --> 01:06:42,900 μικρότερος αριθμός ήταν. 1291 01:06:42,900 --> 01:06:45,780 Marcus, μπορείτε να αναδιατυπώσει αυτή τη γραμμή ενώ ο κατάλογος είναι εκτός λειτουργίας; 1292 01:06:45,780 --> 01:06:51,160 1293 01:06:51,160 --> 01:06:53,900 >> ΦΟΙΤΗΤΗΣ: Ενώ οι αριθμοί δεν έχουν ταξινομηθεί; 1294 01:06:53,900 --> 01:06:55,920 >> JASON Hirshhorn: Εντάξει, έτσι ώστε να γνωρίζουμε ότι οι αριθμοί δεν έχουν 1295 01:06:55,920 --> 01:06:58,670 ταξινόμηση, τι πρέπει να κάνουμε; 1296 01:06:58,670 --> 01:07:00,640 Πόσο θα πρέπει να περάσουν από αυτή τη λίστα; 1297 01:07:00,640 --> 01:07:09,650 >> ΦΟΙΤΗΤΗΣ: Έτσι υποθέτω ένα βρόχο, ή ενώ, ενώ οι αριθμοί που ελέγχθηκαν είναι λιγότερο 1298 01:07:09,650 --> 01:07:11,900 από το μήκος του καταλόγου; 1299 01:07:11,900 --> 01:07:13,160 >> JASON Hirshhorn: Εντάξει, αυτό είναι καλό. 1300 01:07:13,160 --> 01:07:15,000 Νομίζω ότι misphrased ερώτησή μου άσχημα. 1301 01:07:15,000 --> 01:07:15,990 Ήμουν απλώς προσπαθεί να πάρει στο θα πάμε να πρέπει να πάει 1302 01:07:15,990 --> 01:07:17,580 όλη τη λίστα. 1303 01:07:17,580 --> 01:07:20,490 Έτσι, ενώ ο κατάλογος είναι εκτός λειτουργίας, για μένα, είναι δύσκολο να χαρτογραφηθούν οι. 1304 01:07:20,490 --> 01:07:24,940 Αλλά βασικά, αυτό είναι το πώς Νομίζω ότι γι 'αυτό. 1305 01:07:24,940 --> 01:07:28,880 Περάστε από ολόκληρη τη λίστα, βρείτε το μικρότερο αριθμό, τοποθετήστε το στο 1306 01:07:28,880 --> 01:07:30,130 αρχίζουν - στην πραγματικότητα, έχεις δίκιο. 1307 01:07:30,130 --> 01:07:31,380 Ας βάλει και τους δύο. 1308 01:07:31,380 --> 01:07:33,470 1309 01:07:33,470 --> 01:07:39,050 >> Έτσι, ενώ ο κατάλογος είναι εκτός λειτουργίας, θα πρέπει να περάσουν από ολόκληρη τη λίστα 1310 01:07:39,050 --> 01:07:42,250 φορά, τον μικρότερο αριθμό, τον τόπο αυτό στην αρχή της λίστας, βάλτε 1311 01:07:42,250 --> 01:07:45,430 η αρχή της λίστας, όπου η ήταν μικρότερος αριθμός, και στη συνέχεια, αν η 1312 01:07:45,430 --> 01:07:47,460 λίστα είναι ακόμα εκτός λειτουργίας, έχουμε Πρέπει να περάσει μέσα από αυτό 1313 01:07:47,460 --> 01:07:48,620 διαδικασία και πάλι, έτσι δεν είναι; 1314 01:07:48,620 --> 01:07:51,610 Γι 'αυτό το είδος επιλογής, Big-O runtime του είδους επιλογής, ο καθένας; 1315 01:07:51,610 --> 01:07:52,830 >> ΦΟΙΤΗΤΗΣ: n στο τετράγωνο. 1316 01:07:52,830 --> 01:07:53,590 >> JASON Hirshhorn: n τετράγωνο. 1317 01:07:53,590 --> 01:07:57,040 Επειδή, όπως ο Marcus και εγώ μόλις συνειδητοποίησα εδώ, θα πάμε να πρέπει να 1318 01:07:57,040 --> 01:08:00,310 περάσουν από τη λίστα καταλόγου αριθμό φορών. 1319 01:08:00,310 --> 01:08:03,420 Έτσι περνάει κάτι από μήκους n, n: αριθμός των φορές 1320 01:08:03,420 --> 01:08:04,990 είναι στην πραγματικότητα n τετράγωνο. 1321 01:08:04,990 --> 01:08:08,100 >> Έτσι, αυτό είναι ψευδοκώδικα μας. 1322 01:08:08,100 --> 01:08:09,360 Αυτό φαίνεται πολύ καλή. 1323 01:08:09,360 --> 01:08:11,870 Μήπως κάποιος έχει απορίες για το ψευδοκώδικα; 1324 01:08:11,870 --> 01:08:14,440 Διότι στην πραγματικότητα το είδος επιλογής πρέπει να ίσως έρθει ένας προς ένα, από τον κωδικό 1325 01:08:14,440 --> 01:08:14,980 ψευδοκώδικα. 1326 01:08:14,980 --> 01:08:17,569 Έτσι, οποιεσδήποτε ερωτήσεις σχετικά με το λογική του ψευδοκώδικα; 1327 01:08:17,569 --> 01:08:18,819 Παρακαλώ ρωτήστε το τώρα. 1328 01:08:18,819 --> 01:08:22,609 1329 01:08:22,609 --> 01:08:25,379 >> Επιλογή είδους - ενώ η λίστα είναι έξω της τάξης, θα πάμε για να περάσει μέσα από αυτό 1330 01:08:25,379 --> 01:08:27,529 και να βρει το μικρότερο κάθε φορά και το βάζουμε στο μπροστινό μέρος. 1331 01:08:27,529 --> 01:08:33,470 Έτσι, ενώ ο κατάλογος είναι εκτός λειτουργίας, μπορεί να κάποιος να μου δώσει αυτή τη γραμμή του κώδικα που 1332 01:08:33,470 --> 01:08:39,689 Δεν μου έχει δώσει μια γραμμή κώδικα ακόμα, παρακαλώ; 1333 01:08:39,689 --> 01:08:40,939 Ακούγεται σαν τι; 1334 01:08:40,939 --> 01:08:43,669 1335 01:08:43,669 --> 01:08:44,649 >> ΦΟΙΤΗΤΗΣ: Αυτό είναι ένα βρόχο. 1336 01:08:44,649 --> 01:08:45,830 >> JASON Hirshhorn: Ακούγεται ήθελα ένα βρόχο. 1337 01:08:45,830 --> 01:08:47,653 Εντάξει, μπορείτε να μου δώσετε την για βρόχο; 1338 01:08:47,653 --> 01:08:48,925 Για - 1339 01:08:48,925 --> 01:08:50,219 >> ΦΟΙΤΗΤΗΣ: i ισούται με 0. 1340 01:08:50,219 --> 01:08:52,705 >> JASON Hirshhorn: i ή - 1341 01:08:52,705 --> 01:08:55,111 τι μας λείπει; 1342 01:08:55,111 --> 01:08:56,819 Τι συμβαίνει εδώ; 1343 01:08:56,819 --> 01:08:57,550 >> ΣΠΟΥΔΑΣΤΩΝ: Int. 1344 01:08:57,550 --> 01:08:59,270 >> JASON Hirshhorn: Ακριβώς. 1345 01:08:59,270 --> 01:09:02,590 (Int i = 0? - 1346 01:09:02,590 --> 01:09:07,843 >> ΦΟΙΤΗΤΗΣ: i 01:09:09,319 >> JASON Hirshhorn: καρφωτή αυτό, Jeff. 1348 01:09:09,319 --> 01:09:10,660 Θα πάμε μέσα από τη λίστα, έτσι δεν είναι; 1349 01:09:10,660 --> 01:09:11,880 Έχουμε δει τον εν λόγω κώδικα πριν. 1350 01:09:11,880 --> 01:09:12,850 Τέλεια. 1351 01:09:12,850 --> 01:09:14,790 Οπότε ας βάλουμε αγκύλες μας εδώ. 1352 01:09:14,790 --> 01:09:17,859 Πάω να βάλω μερικά άγκιστρα εδώ. 1353 01:09:17,859 --> 01:09:21,660 >> Έτσι, ενώ είναι 0, πρέπει να προχωρήσουμε με ολόκληρη τη λίστα. 1354 01:09:21,660 --> 01:09:26,612 Έτσι, κάθε φορά που περνάμε από τη λίστα, τι θέλουμε να παρακολουθείτε; 1355 01:09:26,612 --> 01:09:28,260 >> ΦΟΙΤΗΤΗΣ: Εάν οι τυχόν συμβάσεις ανταλλαγής πραγματοποιούνται. 1356 01:09:28,260 --> 01:09:29,069 >> JASON Hirshhorn: Βρείτε το μικρότερο αριθμό. 1357 01:09:29,069 --> 01:09:31,479 Έτσι, θα πρέπει μάλλον να παρακολουθείτε ο μικρότερος αριθμός κάθε φορά. 1358 01:09:31,479 --> 01:09:34,590 Έτσι, σύμφωνα μπορώ να κάνω για να παρακολουθείτε από το μικρότερο αριθμό; 1359 01:09:34,590 --> 01:09:37,720 Aleha, πώς μπορώ να κρατήσω παρακολουθείτε κάτι; 1360 01:09:37,720 --> 01:09:38,460 >> ΦΟΙΤΗΤΗΣ: Ξεκινήστε μια νέα μεταβλητή. 1361 01:09:38,460 --> 01:09:39,390 >> JASON Hirshhorn: Ξεκινήστε μια νέα μεταβλητή. 1362 01:09:39,390 --> 01:09:40,069 Ας δημιουργήσουμε μια μεταβλητή. 1363 01:09:40,069 --> 01:09:41,830 Τι είδους; 1364 01:09:41,830 --> 01:09:42,930 >> ΣΠΟΥΔΑΣΤΩΝ: Int. 1365 01:09:42,930 --> 01:09:43,710 >> JASON Hirshhorn: Int. 1366 01:09:43,710 --> 01:09:44,939 Ας το ονομάσουμε το μικρότερο. 1367 01:09:44,939 --> 01:09:47,600 Και τι είναι ίσα όταν είμαστε μόλις αρχίζει έξω; 1368 01:09:47,600 --> 01:09:48,910 Δεν έχουν περάσει ακόμα στην λίστα. 1369 01:09:48,910 --> 01:09:50,540 Είμαστε στο πρώτο μέρος της λίστα για πρώτη φορά μας μέσα. 1370 01:09:50,540 --> 01:09:51,930 Τι κάνει το ίδιο, το μικρότερο αριθμό; 1371 01:09:51,930 --> 01:09:54,140 >> ΦΟΙΤΗΤΗΣ: Αξίες i. 1372 01:09:54,140 --> 01:09:54,900 >> JASON Hirshhorn: Αξίες i. 1373 01:09:54,900 --> 01:09:56,980 Αυτό ακούγεται ακριβώς σωστό, έτσι δεν είναι; 1374 01:09:56,980 --> 01:09:59,590 Ο μικρότερος αριθμός στην αρχή είναι όπου είμαστε. 1375 01:09:59,590 --> 01:10:01,960 Έτσι τώρα έχουμε μικρότερο μας, και χρειαζόμαστε να περάσουν ολόκληρη τη λίστα και 1376 01:10:01,960 --> 01:10:05,080 συγκρίνουμε αυτό μικρότερη για όλα τα άλλα. 1377 01:10:05,080 --> 01:10:08,150 Έτσι, δεν περνάμε πάλι στη λίστα; 1378 01:10:08,150 --> 01:10:08,630 Michael; 1379 01:10:08,630 --> 01:10:10,000 >> ΦΟΙΤΗΤΗΣ: Θα πρέπει να κάνετε άλλο για το βρόχο. 1380 01:10:10,000 --> 01:10:10,383 >> JASON Hirshhorn: άλλη για το βρόχο. 1381 01:10:10,383 --> 01:10:11,276 Ας το κάνουμε. 1382 01:10:11,276 --> 01:10:12,540 Δώστε μου λίγο κώδικα. 1383 01:10:12,540 --> 01:10:13,790 >> ΦΟΙΤΗΤΗΣ: Για την μέθοδο loop - 1384 01:10:13,790 --> 01:10:16,750 1385 01:10:16,750 --> 01:10:19,470 για το μικρότερο - 1386 01:10:19,470 --> 01:10:23,040 1387 01:10:23,040 --> 01:10:25,770 απλά int j, θα μπορούσατε να πείτε; 1388 01:10:25,770 --> 01:10:31,150 = 0? Τέτοια ώστε - 1389 01:10:31,150 --> 01:10:34,014 1390 01:10:34,014 --> 01:10:35,710 >> JASON Hirshhorn: Λοιπόν, αν θέλουμε να περάσουν ολόκληρη τη λίστα - 1391 01:10:35,710 --> 01:10:37,847 >> ΦΟΙΤΗΤΗΣ: j 01:10:42,140 1393 01:10:42,140 --> 01:10:42,405 >> JASON Hirshhorn: Fantastic. 1394 01:10:42,405 --> 01:10:46,100 Εμείς πάμε για να περάσουν ο βρόχος for για άλλη μια φορά. 1395 01:10:46,100 --> 01:10:51,380 Και πώς μπορούμε να βρούμε το μικρότερο αριθμό; 1396 01:10:51,380 --> 01:10:52,630 Τομ; 1397 01:10:52,630 --> 01:10:54,570 1398 01:10:54,570 --> 01:11:00,520 Έχουμε την τρέχουσα μικρότερο αριθμό, έτσι πώς θα βρείτε το νέο μικρότερο; 1399 01:11:00,520 --> 01:11:07,200 >> ΦΟΙΤΗΤΗΣ: Μπορούμε να ελέγξουμε εάν το μικρότερο αριθμός που έχουμε είναι μεγαλύτερη από ό, τι 1400 01:11:07,200 --> 01:11:09,040 τιμές βραχίονα j. 1401 01:11:09,040 --> 01:11:14,740 >> JASON Hirshhorn: Έτσι, αν είναι μικρότερο μεγαλύτερες από τις τιμές του βραχίονα j. 1402 01:11:14,740 --> 01:11:19,350 Έτσι, αν οι σημερινές μικρότερο μας είναι μεγαλύτερο από - 1403 01:11:19,350 --> 01:11:21,770 Πάω να μετακινήσετε αυτά τα δύο γραμμές του κώδικα εκεί έξω για ένα δευτερόλεπτο. 1404 01:11:21,770 --> 01:11:26,010 Επειδή πριν κάνουμε οποιαδήποτε εναλλαγή, εμείς πρέπει να περάσουν από ολόκληρη τη λίστα. 1405 01:11:26,010 --> 01:11:28,880 Έτσι, αυτό θα πρέπει στην πραγματικότητα pseudocode να είναι έξω από αυτό το εσωτερικό βρόχο for. 1406 01:11:28,880 --> 01:11:30,390 Έτσι περνούν ολόκληρη τη λίστα. 1407 01:11:30,390 --> 01:11:34,520 Εάν μικρότερο είναι μεγαλύτερη από ό, τι τιμές j τότε τι; 1408 01:11:34,520 --> 01:11:37,830 >> ΦΟΙΤΗΤΗΣ: Τότε μικρότερο ισούται τιμές j. 1409 01:11:37,830 --> 01:11:41,190 1410 01:11:41,190 --> 01:11:42,600 >> JASON Hirshhorn: Fantastic. 1411 01:11:42,600 --> 01:11:44,580 Μια γρήγορη ερώτηση - 1412 01:11:44,580 --> 01:11:47,236 η πρώτη φορά που περνάμε από αυτόν τον βρόχο, i πρόκειται να ισούται με 0, j συμβαίνει 1413 01:11:47,236 --> 01:11:50,710 να ισούται με 0 όταν φτάσουμε εδώ. 1414 01:11:50,710 --> 01:11:52,410 Έτσι θα πάμε να συγκρίνει ένας αριθμός για την ίδια. 1415 01:11:52,410 --> 01:11:53,660 Είναι ότι η αποτελεσματική; 1416 01:11:53,660 --> 01:11:57,260 1417 01:11:57,260 --> 01:11:58,390 Όχι, δεν είναι πραγματικά αποτελεσματική. 1418 01:11:58,390 --> 01:12:02,915 Έτσι, δεν ι μας πρέπει να πάει από 0 έως n κάθε φορά; 1419 01:12:02,915 --> 01:12:06,310 Μήπως θα πρέπει πάντα να ελέγχετε καθ 'όλη τη λίστα; 1420 01:12:06,310 --> 01:12:06,520 [Δεν ακούγεται]; 1421 01:12:06,520 --> 01:12:07,564 >> ΦΟΙΤΗΤΗΣ: Ξεκινήστε με i αντ 'αυτού. 1422 01:12:07,564 --> 01:12:09,405 >> JASON Hirshhorn: ι δοχείου ξεκινήσουμε με αυτό; 1423 01:12:09,405 --> 01:12:09,990 >> ΣΠΟΥΔΑΣΤΩΝ: i. 1424 01:12:09,990 --> 01:12:13,040 >> JASON Hirshhorn: j μπορεί να ξεκινήσει με το i. 1425 01:12:13,040 --> 01:12:18,840 Έτσι τώρα έχουμε συγκρίνετε ξεκινώντας με το οποίο είμαστε σε. 1426 01:12:18,840 --> 01:12:21,020 Αλλά ακόμα και τότε, είναι ότι καθώς το δυνατόν πιο αποτελεσματική; 1427 01:12:21,020 --> 01:12:22,320 >> ΦΟΙΤΗΤΗΣ: i + 1. 1428 01:12:22,320 --> 01:12:25,420 >> JASON Hirshhorn: i + 1 φαίνεται να είναι η πιο αποτελεσματική, επειδή 1429 01:12:25,420 --> 01:12:26,120 έχουν ήδη i. 1430 01:12:26,120 --> 01:12:28,100 Είμαστε δηλώνοντας ότι η μικρότερη στην γραμμή 15. 1431 01:12:28,100 --> 01:12:29,350 Εμείς πάμε για να ξεκινήσει με το επόμενο αυτόματα. 1432 01:12:29,350 --> 01:12:34,470 1433 01:12:34,470 --> 01:12:38,540 Έτσι περνάμε το βρόχο for. 1434 01:12:38,540 --> 01:12:39,620 Θα πάμε μέσα από κάθε φορά. 1435 01:12:39,620 --> 01:12:40,860 Θα πάμε μέσα από μια σειρά φορές. 1436 01:12:40,860 --> 01:12:42,860 Τώρα έχουμε πάρει μέσα αυτό το εσωτερικό βρόχο for. 1437 01:12:42,860 --> 01:12:44,350 Έχουμε τη μικρότερη τιμή σώζει. 1438 01:12:44,350 --> 01:12:46,045 Πρέπει να το τοποθετήσετε κατά τη ξεκινώντας από τη λίστα. 1439 01:12:46,045 --> 01:12:48,390 Λοιπόν, πώς μπορώ να το τοποθετήσετε κατά τη ξεκινώντας από τη λίστα; 1440 01:12:48,390 --> 01:12:51,290 1441 01:12:51,290 --> 01:12:55,926 Ποια είναι η μεταβλητή που αναφέρεται στην αρχή της λίστας; 1442 01:12:55,926 --> 01:13:00,500 Είμαστε σε αυτό το εξωτερικό για το βρόχο, έτσι ώστε ό, τι αφορά το 1443 01:13:00,500 --> 01:13:01,280 ξεκινώντας από τη λίστα; 1444 01:13:01,280 --> 01:13:02,880 >> ΦΟΙΤΗΤΗΣ: Αξίες i. 1445 01:13:02,880 --> 01:13:03,510 >> JASON Hirshhorn: Ακριβώς δεξιά. 1446 01:13:03,510 --> 01:13:04,650 Αξίες i είναι η αρχή του - 1447 01:13:04,650 --> 01:13:06,320 ή συγνώμη, όχι η αρχή. 1448 01:13:06,320 --> 01:13:07,090 Αυτό ήταν συγκεχυμένες. 1449 01:13:07,090 --> 01:13:11,620 Είναι που είμαστε στην αρχή του η αδιαχώριστα τμήμα του καταλόγου. 1450 01:13:11,620 --> 01:13:12,800 Έτσι αξίες i. 1451 01:13:12,800 --> 01:13:14,050 Και τι κάνει η ίση; 1452 01:13:14,050 --> 01:13:15,925 1453 01:13:15,925 --> 01:13:17,326 >> ΣΠΟΥΔΑΣΤΩΝ: Μικρότερο. 1454 01:13:17,326 --> 01:13:18,862 >> JASON Hirshhorn: Αξίες i ισούται με τι; 1455 01:13:18,862 --> 01:13:19,310 >> ΣΠΟΥΔΑΣΤΩΝ: Μικρότερο. 1456 01:13:19,310 --> 01:13:20,030 >> JASON Hirshhorn: Μικρότερο. 1457 01:13:20,030 --> 01:13:20,980 Ακριβώς δεξιά. 1458 01:13:20,980 --> 01:13:23,510 Γι 'αυτό και φαινόταν ότι τοποθετώντας στην αρχή του καταλόγου, και τώρα πρέπει να βάλουμε 1459 01:13:23,510 --> 01:13:25,710 η αρχή της λίστας, όπου ο μικρότερος αριθμός ήταν. 1460 01:13:25,710 --> 01:13:29,700 Λοιπόν, πώς μπορώ να γράψω όπου η μικρότερος αριθμός ήταν; 1461 01:13:29,700 --> 01:13:31,670 Οι τιμές του τι; 1462 01:13:31,670 --> 01:13:33,170 >> ΣΠΟΥΔΑΣΤΩΝ: 0. 1463 01:13:33,170 --> 01:13:34,090 >> JASON Hirshhorn: Το μικρό αριθμός είναι στο 0; 1464 01:13:34,090 --> 01:13:35,340 >> ΦΟΙΤΗΤΗΣ: Ναι. 1465 01:13:35,340 --> 01:13:38,680 1466 01:13:38,680 --> 01:13:39,910 >> JASON Hirshhorn: Τι θα συμβεί αν η μικρότερη αριθμός ήταν στο τέλος της 1467 01:13:39,910 --> 01:13:40,860 αυτό αδιαχώριστα λίστα; 1468 01:13:40,860 --> 01:13:42,460 >> ΦΟΙΤΗΤΗΣ: Συγγνώμη, ποια ήταν η ερώτηση; 1469 01:13:42,460 --> 01:13:44,020 >> JASON Hirshhorn: Πού είναι ο μικρότερος αριθμός; 1470 01:13:44,020 --> 01:13:46,940 Πήραμε το μικρότερο και το βάζουμε σε το αρχή, με αυτή τη γραμμή εδώ. 1471 01:13:46,940 --> 01:13:48,987 >> ΦΟΙΤΗΤΗΣ: Θα πρέπει να έχει έχουν αποθηκευτεί σε ορισμένες - 1472 01:13:48,987 --> 01:13:50,510 >> ΦΟΙΤΗΤΗΣ: Οι τιμές j. 1473 01:13:50,510 --> 01:13:51,520 >> JASON Hirshhorn: Λοιπόν, είναι τιμές δεν είναι απαραίτητα j. 1474 01:13:51,520 --> 01:13:54,100 Δεν υπάρχουν ακόμη σε αυτό το σημείο. 1475 01:13:54,100 --> 01:13:55,960 >> ΦΟΙΤΗΤΗΣ: Πρέπει να δηλώσετε μια μεταβλητή νωρίτερα και 1476 01:13:55,960 --> 01:13:58,230 τότε αναθέσει - 1477 01:13:58,230 --> 01:14:01,150 όταν θα βρείτε το μικρότερο αριθμό, εκχωρήσετε το δείκτη του αριθμού αυτού 1478 01:14:01,150 --> 01:14:02,480 κάποια μεταβλητή ή κάτι τέτοιο. 1479 01:14:02,480 --> 01:14:04,790 >> JASON Hirshhorn: Έτσι, μπορεί να σας πω ότι και πάλι; 1480 01:14:04,790 --> 01:14:08,390 >> ΦΟΙΤΗΤΗΣ: Έτσι, όταν κήρυξε int μικρότερο, θα πρέπει επίσης να δηλώσει int 1481 01:14:08,390 --> 01:14:10,750 μικρότερος δείκτης = i, ή κάτι τέτοιο. 1482 01:14:10,750 --> 01:14:13,280 >> JASON Hirshhorn: Έτσι, όταν κάνω int μικρότερο, θα κρατήσει μόνο κομμάτι 1483 01:14:13,280 --> 01:14:16,150 της αξίας, αλλά η θέση. 1484 01:14:16,150 --> 01:14:20,850 int = smallest_location σε αυτό περίπτωση, θα κάνουμε ακριβώς εγώ. 1485 01:14:20,850 --> 01:14:22,390 Πρέπει να γνωρίζουμε πού είναι. 1486 01:14:22,390 --> 01:14:26,820 Φτάσαμε στο τέλος του κώδικα, και συνειδητοποιήσαμε ότι δεν είχε καμία ιδέα για το πού ήταν. 1487 01:14:26,820 --> 01:14:29,810 Και έτσι πάλι, είμαστε χαρτογράφηση αυτό σε ένα προς ένα. 1488 01:14:29,810 --> 01:14:32,890 Εσείς κωδικοποίησης αυτό για τη δική σας θέληση πιθανώς να πάρετε το ίδιο πρόβλημα. 1489 01:14:32,890 --> 01:14:34,130 Πώς στο καλό μπορώ να το βρω; 1490 01:14:34,130 --> 01:14:36,720 Και τότε θα συνειδητοποιήσουμε, περιμένει, Πρέπει να παρακολουθείτε αυτό. 1491 01:14:36,720 --> 01:14:38,500 >> Έτσι, αν μικρότερο είναι μεγαλύτερη από τις τιμές j. 1492 01:14:38,500 --> 01:14:39,740 Θέτουμε μικρότερο ισούται με τις τιμές j. 1493 01:14:39,740 --> 01:14:42,090 Τι άλλο θα πρέπει να αλλάξουν; 1494 01:14:42,090 --> 01:14:43,710 Constantin, τι άλλο να κάνει πρέπει να αλλάξουμε; 1495 01:14:43,710 --> 01:14:44,560 >> ΣΠΟΥΔΑΣΤΩΝ: Η τοποθεσία. 1496 01:14:44,560 --> 01:14:45,270 >> JASON Hirshhorn: Ακριβώς. 1497 01:14:45,270 --> 01:14:46,925 Έτσι, να μου δώσει αυτή τη γραμμή στον κώδικα. 1498 01:14:46,925 --> 01:14:53,310 >> ΦΟΙΤΗΤΗΣ: smallest_location = j. 1499 01:14:53,310 --> 01:14:54,790 >> JASON Hirshhorn: Ακριβώς. 1500 01:14:54,790 --> 01:14:58,210 Και στη συνέχεια, προς τα κάτω, στο τέλος, αν θέλουμε να θέσει την αρχή της λίστας, όπου 1501 01:14:58,210 --> 01:15:00,790 ο μικρότερος αριθμός ήταν, πώς Δεν αναφερόμαστε στο σημείο όπου ο 1502 01:15:00,790 --> 01:15:02,200 μικρότερος αριθμός ήταν; 1503 01:15:02,200 --> 01:15:03,580 Μάρκους; 1504 01:15:03,580 --> 01:15:08,530 >> ΦΟΙΤΗΤΗΣ: Ο μικρότερος αριθμός ήταν βρίσκεται σε μικρότερη θέση. 1505 01:15:08,530 --> 01:15:12,230 >> JASON Hirshhorn: Έτσι, σε τιμές smallest_location. 1506 01:15:12,230 --> 01:15:14,700 Και τι έβαλε εκεί; 1507 01:15:14,700 --> 01:15:17,600 Η αρχή της λίστα, τι είναι αυτό; 1508 01:15:17,600 --> 01:15:19,710 >> ΦΟΙΤΗΤΗΣ: Λοιπόν, πραγματικά δεν ξέρω πια γιατί αντικατέστησε. 1509 01:15:19,710 --> 01:15:23,250 Γι 'αυτό είναι μια αντάλλαξαν θέσεις των δύο αυτών γραμμών; 1510 01:15:23,250 --> 01:15:26,110 Αν αλλάξετε αυτές τις δύο γραμμές γύρω. 1511 01:15:26,110 --> 01:15:30,740 >> JASON Hirshhorn: Εντάξει, έτσι δεν κάνουμε πια, γιατί έχουμε επαναφορά της γραμμής 1512 01:15:30,740 --> 01:15:31,960 πριν αξίες i προς το μικρότερο. 1513 01:15:31,960 --> 01:15:33,810 Έτσι χάσαμε ότι η αρχική αξία. 1514 01:15:33,810 --> 01:15:37,350 Έτσι είπατε ανταλλαγής αυτές τις δύο γραμμές. 1515 01:15:37,350 --> 01:15:41,780 Έτσι, τίθεται πλέον την αρχή της λίστας όπου ο μικρότερος αριθμός ήταν. 1516 01:15:41,780 --> 01:15:47,060 Έτσι smallest_location ισούται με τιμές i. 1517 01:15:47,060 --> 01:15:51,310 Που κινείται την αρχή αυτή αδιαχώριστα τμήμα της λίστας με το 1518 01:15:51,310 --> 01:15:52,090 μικρότερη θέση. 1519 01:15:52,090 --> 01:15:54,860 Και στη συνέχεια σε τιμές i κινούμαστε ότι μικρότερος αριθμός. 1520 01:15:54,860 --> 01:15:57,450 >> Μήπως αυτό έχει νόημα γιατί έπρεπε να κάνουμε αυτή την ανταλλαγή; 1521 01:15:57,450 --> 01:15:59,650 Θα έχουν αντικατασταθεί αυτή την τιμή - ένα άλλο πράγμα που θα μπορούσε πιθανότατα να έχει 1522 01:15:59,650 --> 01:16:02,740 υπολογίσει και βρέθηκε στο ΑΕΠ. 1523 01:16:02,740 --> 01:16:05,310 Έτσι έχουμε φροντίσει όλα τα ψευδοκώδικα. 1524 01:16:05,310 --> 01:16:10,935 Υπάρχει κάτι άλλο που πρέπει να γράψω εδώ; 1525 01:16:10,935 --> 01:16:14,911 Μπορεί κανείς να σκεφτώ τίποτα; 1526 01:16:14,911 --> 01:16:16,180 >> ΦΟΙΤΗΤΗΣ: Πώς το ξέρεις όταν τελειώσετε; 1527 01:16:16,180 --> 01:16:17,680 >> JASON Hirshhorn: Πώς μπορούμε να ξέρετε όταν τελειώσουμε; 1528 01:16:17,680 --> 01:16:18,890 Μεγάλη ερώτηση. 1529 01:16:18,890 --> 01:16:21,684 Έτσι, πώς ξέρουμε όταν τελειώσουμε. 1530 01:16:21,684 --> 01:16:24,720 >> ΦΟΙΤΗΤΗΣ: Δημιουργήστε μια μεταβλητή για να κρατήσει καταμέτρηση από το αν υπάρχει μια συμφωνία ανταλλαγής γίνεται ή όχι 1531 01:16:24,720 --> 01:16:27,810 και να περάσουν ένα πέρασμα. 1532 01:16:27,810 --> 01:16:30,180 >> JASON Hirshhorn: OK. 1533 01:16:30,180 --> 01:16:31,800 Αυτό θα μπορούσε να λειτουργήσει στο bubble sort. 1534 01:16:31,800 --> 01:16:35,210 Αλλά για το είδος επιλογής, αν δεν το κάνουμε κάνει μια συμφωνία ανταλλαγής, που θα μπορούσε απλώς να είναι 1535 01:16:35,210 --> 01:16:38,670 επειδή η μικρότερη τιμή είναι σε αυτό σωστή θέση του. 1536 01:16:38,670 --> 01:16:41,240 Θα μπορούσαμε να έχουμε μια λίστα με 1, 2, 4, 3. 1537 01:16:41,240 --> 01:16:42,830 Η δεύτερη φορά μέσα μας Δεν θα κάνει καμία swaps. 1538 01:16:42,830 --> 01:16:47,260 Θα είναι με τον αριθμό 2, αλλά θα πρέπει ακόμα να συνεχίσω. 1539 01:16:47,260 --> 01:16:49,390 Έτσι, χρειαζόμαστε να παρακολουθείτε πότε τελειώσαμε, ή μήπως απλά θέλουν να πάνε 1540 01:16:49,390 --> 01:16:50,640 έως ότου αυτό τελειώσει; 1541 01:16:50,640 --> 01:16:54,098 1542 01:16:54,098 --> 01:16:56,740 >> ΦΟΙΤΗΤΗΣ: Μπορούμε να πάμε μόνο μέχρι να τελειώσει. 1543 01:16:56,740 --> 01:16:58,090 >> JASON Hirshhorn: Μπορούμε μόνο πάει μέχρι αυτό να ολοκληρωθεί. 1544 01:16:58,090 --> 01:17:01,720 Στο bubble sort, είστε ακριβώς δεξιά, Jeff και Aleha, με τη λύση σας - 1545 01:17:01,720 --> 01:17:04,990 είναι μεγάλη για να παρακολουθείτε πόσα swaps κάνατε, γιατί στη φυσαλίδα 1546 01:17:04,990 --> 01:17:07,920 είδος, αν το κάνετε, στην πραγματικότητα δεν κάνουν swaps, γίνεστε και εσείς ίσως να κόψετε σας 1547 01:17:07,920 --> 01:17:09,000 πρόβλημα κάτω από ένα κομμάτι. 1548 01:17:09,000 --> 01:17:11,440 Αλλά για το είδος επιλογής, έχετε πραγματικά Πρέπει να πάω μέχρι το τέλος της 1549 01:17:11,440 --> 01:17:14,940 λίστα κάθε φορά. 1550 01:17:14,940 --> 01:17:16,200 >> Έτσι αυτό είναι ότι. 1551 01:17:16,200 --> 01:17:18,530 Έχουμε δύο λεπτά. 1552 01:17:18,530 --> 01:17:21,560 Ας κάνουμε όλοι. 1553 01:17:21,560 --> 01:17:24,340 Επιτρέψτε μου απλά ανοίξτε Βρείτε εδώ και να κάνουν είμαι σίγουρη ότι στην πραγματικότητα που καλεί - 1554 01:17:24,340 --> 01:17:25,610 Δεν είμαι καλώντας bubble sort. 1555 01:17:25,610 --> 01:17:29,230 Ας αλλάξουμε αυτό το είδος επιλογής. 1556 01:17:29,230 --> 01:17:31,060 κάνει όλα. / βρείτε. 1557 01:17:31,060 --> 01:17:32,360 Ας βρούμε 42. 1558 01:17:32,360 --> 01:17:38,110 Αυτή τη φορά θα πάμε να περάσουν μια αδιαχώριστα λίστα, επειδή θα πρέπει να ταξινομήσετε 1559 01:17:38,110 --> 01:17:43,790 πρώτο, σύμφωνα με τον κώδικα find - πρέπει να ταξινομήσετε πρώτη χρήση της λειτουργίας του είδους μας και στη συνέχεια 1560 01:17:43,790 --> 01:17:44,995 ψάξουν για κάτι. 1561 01:17:44,995 --> 01:17:46,245 Δάχτυλα διασχίσει όλους. 1562 01:17:46,245 --> 01:17:48,530 1563 01:17:48,530 --> 01:17:49,370 >> Ω Θεέ μου. 1564 01:17:49,370 --> 01:17:50,800 Πω πω, η καρδιά μου χτυπούσε. 1565 01:17:50,800 --> 01:17:52,320 Έτσι, αυτό είναι σωστό. 1566 01:17:52,320 --> 01:17:57,270 Στην πραγματικότητα, αν έτρεξε αυτό περισσότερο σε μεγάλο βαθμό, ο κώδικας, όσο μπορώ 1567 01:17:57,270 --> 01:17:59,280 πω, είναι απολύτως σωστό. 1568 01:17:59,280 --> 01:18:02,150 Υπάρχουν κάποιες προτάσεις Θα ήθελα να έχω για σένα. 1569 01:18:02,150 --> 01:18:06,215 Για παράδειγμα, 15 και 16 φαίνονται λίγο περιττή. 1570 01:18:06,215 --> 01:18:09,450 Φαίνεται πως δεν είναι απαραίτητο πρέπει να αποθηκεύσετε τόσο εκείνους. 1571 01:18:09,450 --> 01:18:12,790 Αν έχετε την παραμικρή θέση, μπορείτε εύκολα να βρείτε τη μικρότερη τιμή από 1572 01:18:12,790 --> 01:18:14,750 απλά πληκτρολογώντας τις τιμές των i. 1573 01:18:14,750 --> 01:18:18,100 >> Έτσι, εάν επρόκειτο να ταξινόμησης κωδικό σας, η οποία θα είναι στην πραγματικότητα, θα ήθελα να 1574 01:18:18,100 --> 01:18:21,160 κατά πάσα πιθανότητα από ένα σημείο, αν περιλαμβάνονται τα δύο αυτά, γιατί 1575 01:18:21,160 --> 01:18:22,670 δεν χρειάζονται και τα δύο από αυτά. 1576 01:18:22,670 --> 01:18:25,400 Εάν έχετε την τοποθεσία, μπορείτε να να πάρει πολύ εύκολα την τιμή. 1577 01:18:25,400 --> 01:18:27,520 Και φαίνεται λίγο παράξενο για την αποθήκευση και τους δύο. 1578 01:18:27,520 --> 01:18:31,070 Ίσως να μην πάρει ακόμη και ένα σημείο, αλλά σίγουρα σχολιάσει ότι αυτό είναι ίσως 1579 01:18:31,070 --> 01:18:32,670 δεν είναι μια στιλιστική επιλογή πρέπει να κάνετε. 1580 01:18:32,670 --> 01:18:35,290 Φυσικά, ο κώδικας εξακολουθεί τρέχει πολύ καλά. 1581 01:18:35,290 --> 01:18:36,860 >> Έτσι, δυστυχώς, δεν είχαμε φτάσετε στο bubble sort. 1582 01:18:36,860 --> 01:18:37,940 Λυπάμαι γι 'αυτό. 1583 01:18:37,940 --> 01:18:39,135 Κάναμε φινίρισμα είδος επιλογής. 1584 01:18:39,135 --> 01:18:41,450 Μήπως κάποιος έχει οποιεσδήποτε τελικές ερωτήσεις σχετικά με το είδος επιλογής; 1585 01:18:41,450 --> 01:18:44,320 1586 01:18:44,320 --> 01:18:47,690 >> Εντάξει, πριν από το κεφάλι έξω, θέλω για να ανοίξει το πρόγραμμα περιήγησης Chrome σας. 1587 01:18:47,690 --> 01:18:54,340 Συγγνώμη, αυτό ήταν μόνο μια κραυγαλέα βύσμα για έναν τύπο του προγράμματος περιήγησης στο Internet. 1588 01:18:54,340 --> 01:18:57,770 Μπορείτε να ανοίξετε οποιοδήποτε τύπο του browser, αλλά κατά πάσα πιθανότητα θα είναι το Chrome. 1589 01:18:57,770 --> 01:19:01,250 Και πάμε σε αυτό ακόλουθο δικτυακό τόπο - 1590 01:19:01,250 --> 01:19:06,410 sayat.me/cs50. 1591 01:19:06,410 --> 01:19:07,685 Εάν δεν είστε πληκτρολογώντας στον υπολογιστή σας τώρα, είστε σαφώς 1592 01:19:07,685 --> 01:19:10,210 Δεν το κάνει, Τομ. 1593 01:19:10,210 --> 01:19:12,870 >> Και παρακαλώ να το κάνετε είτε δεξιά τώρα ή στο επόμενο ώρα - 1594 01:19:12,870 --> 01:19:14,260 να μου δώσει κάποια ανατροφοδότηση. 1595 01:19:14,260 --> 01:19:15,660 Αυτό είναι μόνο το τμήμα δύο. 1596 01:19:15,660 --> 01:19:18,060 Έχουμε πολλά περισσότερα μαζί, γι 'αυτό έχουν πολλά περιθώρια βελτίωσης. 1597 01:19:18,060 --> 01:19:19,620 Εγώ ελπίζω έκανε επίσης κάποια πράγματα καλά. 1598 01:19:19,620 --> 01:19:22,160 Έτσι, μπορείτε να με κάνει να νιώσω όλα άσχημα, αλλά αν μπορείτε επίσης να θελήσετε να μου δώσει ένα smiley 1599 01:19:22,160 --> 01:19:24,250 πρόσωπο, εγώ θα εκτιμήσουν ότι καλά. 1600 01:19:24,250 --> 01:19:25,330 Συμπληρώστε ότι μέσα 1601 01:19:25,330 --> 01:19:28,210 >> Και μ 'ένα λεπτό αριστερά, ότι ήταν τρεις εβδομάδες. 1602 01:19:28,210 --> 01:19:30,750 Θα σταθεί έξω για λίγο εάν έχετε οποιεσδήποτε ερωτήσεις. 1603 01:19:30,750 --> 01:19:32,220 Θα σας δω στο διάλεξη αύριο. 1604 01:19:32,220 --> 01:19:34,742