1 00:00:00,000 --> 00:00:03,000 [Powered by Google Translate] [Phần 3] [Ít thoải mái] 2 00:00:03,000 --> 00:00:05,000 >> [Nate hardison] [Đại học Harvard] 3 00:00:05,000 --> 00:00:08,000 >> [Đây là CS50.] [CS50.TV] 4 00:00:08,000 --> 00:00:10,000 >> Được rồi, hãy bắt đầu. 5 00:00:10,000 --> 00:00:13,000 Chào mừng bạn đến với Tuần 4 CS50. 6 00:00:13,000 --> 00:00:19,000 Nếu bạn mở một trình duyệt web và mở ra pset 3, 7 00:00:19,000 --> 00:00:23,000 Scramble với CS50, chúng ta sẽ bắt đầu đi 8 00:00:23,000 --> 00:00:26,000 thông qua phần câu hỏi đó. 9 00:00:26,000 --> 00:00:32,000 Cũng giống như tuần trước, chúng tôi sẽ được làm việc trong CS50 Spaces, 10 00:00:32,000 --> 00:00:35,000 nếu bạn cũng sẽ kéo đó là tốt, 11 00:00:35,000 --> 00:00:43,000 và nếu bạn đi trước và truy cập vào liên kết này mà tôi đã có ở đầu trang. 12 00:00:43,000 --> 00:00:45,000 Đó là thời gian để bắt đầu. 13 00:00:45,000 --> 00:00:51,000 Chúng tôi đã có chương trình hi nhỏ của chúng tôi ở đây. Không có gì điên. 14 00:00:51,000 --> 00:00:55,000 Một trong những điều đầu tiên tôi muốn làm với các bạn ngày hôm nay là đi qua một số giải pháp 15 00:00:55,000 --> 00:00:58,000 Vấn đề Set 1, loại của các giải pháp ví dụ, 16 00:00:58,000 --> 00:01:03,000 chỉ để bạn có thể nhận được một cảm giác về những gì các loại của các nhân viên mã được viết, 17 00:01:03,000 --> 00:01:07,000 những loại sinh viên mã khác đang viết, 18 00:01:07,000 --> 00:01:10,000 và có bạn có một cái nhìn vào nó vì tôi biết nó là lạ 19 00:01:10,000 --> 00:01:14,000 khi bạn gửi một giải pháp cho vấn đề một tập hợp và lấy ý kiến 20 00:01:14,000 --> 00:01:18,000 trên phiên bản riêng của bạn, nhưng đôi khi nó là hữu ích để xem làm thế nào những người khác đã làm nó, 21 00:01:18,000 --> 00:01:22,000 đặc biệt là những người được tốt đẹp. 22 00:01:22,000 --> 00:01:27,000 Đối với hầu hết các phần, tôi đã thực sự ấn tượng với các giải pháp mà các bạn sản xuất. 23 00:01:27,000 --> 00:01:31,000 Tôi vẫn chưa bắt đầu nhìn 2s Set Vấn đề của bạn, nhưng nếu họ bất cứ điều gì như là người đầu tiên, 24 00:01:31,000 --> 00:01:34,000 nó có nghĩa là gì, nhưng những điều tốt đẹp. 25 00:01:34,000 --> 00:01:40,000 >> Nếu bạn nhìn vào các phiên bản của tôi, hãy bắt đầu tất cả các con đường xuống Revision 1, 26 00:01:40,000 --> 00:01:47,000 và chúng ta sẽ có một cái nhìn nhanh chóng tại một giải pháp Mario. 27 00:01:47,000 --> 00:01:54,000 Nếu bạn kéo lên này, các chương trình mà chúng ta sẽ trình bày là chính xác. 28 00:01:54,000 --> 00:01:56,000 Không có vấn đề đúng đắn với những vấn đề này, nhưng là, 29 00:01:56,000 --> 00:01:59,000 chúng tôi muốn nói một chút về vấn đề thiết kế khác nhau 30 00:01:59,000 --> 00:02:03,000 được sử dụng ở đây. 31 00:02:03,000 --> 00:02:08,000 Một trong những điều thú vị về giải pháp 32 00:02:08,000 --> 00:02:11,000 là nó được sử dụng xây dựng này mới được gọi là bảng xác định, 33 00:02:11,000 --> 00:02:15,000 đôi khi cũng được gọi là một băm xác định. 34 00:02:15,000 --> 00:02:18,000 Hãy để tôi phóng to, thu nhỏ về nó ở đây. 35 00:02:18,000 --> 00:02:24,000 # Xác định cho phép bạn để cung cấp cho tên những con số này trong chương trình của bạn. 36 00:02:24,000 --> 00:02:28,000 Trong trường hợp này, chiều cao tối đa của một kim tự tháp trong Mario 37 00:02:28,000 --> 00:02:34,000 đã 23, chứ không phải là đưa 23 trong mã của tôi 38 00:02:34,000 --> 00:02:37,000 chúng ta sẽ đề cập đến như cứng mã hóa 23 - 39 00:02:37,000 --> 00:02:43,000 thay vì điều này sẽ cho MAX_HEIGHT tên vào con số đó, 40 00:02:43,000 --> 00:02:48,000 để xuống đây trong vòng lặp do-trong khi của tôi 41 00:02:48,000 --> 00:02:51,000 bạn thực sự có thể tham khảo MAX_HEIGHT 42 00:02:51,000 --> 00:02:55,000 thay vì đặt số 23. 43 00:02:55,000 --> 00:02:57,000 [Sinh viên] lợi thế của việc đó là gì? 44 00:02:57,000 --> 00:02:59,000 Đó là một câu hỏi lớn. 45 00:02:59,000 --> 00:03:03,000 Một là khả năng đọc. 46 00:03:03,000 --> 00:03:08,000 Một lợi thế của việc sử dụng này # xác định là dễ đọc. 47 00:03:08,000 --> 00:03:11,000 Khi tôi đang đọc mã này, tôi có thể nhìn thấy những gì đang xảy ra. 48 00:03:11,000 --> 00:03:15,000 >> Tôi có thể thấy trong điều kiện này ở đây mà chúng tôi đang thử nghiệm 49 00:03:15,000 --> 00:03:19,000 cho chiều cao là <0, mà chúng ta có thể cũng được xác định 50 00:03:19,000 --> 00:03:22,000 là chiều cao tối thiểu hoặc chiều cao min. 51 00:03:22,000 --> 00:03:25,000 Một thuận lợi khác là tôi có thể đọc phần còn lại của dòng để xem 52 00:03:25,000 --> 00:03:30,000 rằng chúng ta cũng kiểm tra để đảm bảo rằng chiều cao không phải là lớn hơn chiều cao tối đa, 53 00:03:30,000 --> 00:03:35,000 bởi vì chúng tôi sẽ tiếp tục trong khi chiều cao lớn hơn chiều cao tối đa. 54 00:03:35,000 --> 00:03:40,000 Một thuận lợi khác là nếu tôi thu nhỏ một chút ở đây 55 00:03:40,000 --> 00:03:49,000 nếu tôi chạy chương trình này và tôi chạy nó, nói rằng, với 23 ngay bây giờ, 56 00:03:49,000 --> 00:03:52,000 nó sẽ in ra tất cả 23 hàng chỉ cần như thế. 57 00:03:52,000 --> 00:03:54,000 Nhưng nói tôi muốn thay đổi chiều cao tối đa, 58 00:03:54,000 --> 00:03:57,000 và bây giờ tôi muốn giới hạn chiều cao tối đa của kim tự tháp 59 00:03:57,000 --> 00:04:06,000 là chỉ nói người đàn ông, đó là sôi nổi. 60 00:04:06,000 --> 00:04:14,000 # Include, # xác định MAX_HEIGHT, 61 00:04:14,000 --> 00:04:18,000 và chúng ta hãy nói rằng chúng tôi muốn thiết lập nó bằng 10. 62 00:04:18,000 --> 00:04:22,000 Bây giờ, ở thời điểm này, tất cả những gì tôi phải làm là thay đổi nó trong một vị trí này. 63 00:04:22,000 --> 00:04:27,000 Tôi có thể biên dịch lại mã, và bây giờ nếu tôi cố gắng và gõ trong 12, 64 00:04:27,000 --> 00:04:30,000 nó sẽ nhắc tôi một lần nữa. 65 00:04:30,000 --> 00:04:33,000 Trong trường hợp này, chúng tôi chỉ sử dụng MAX_HEIGHT một lần. 66 00:04:33,000 --> 00:04:37,000 Nó không phải là lớn rắc rối một để đi 67 00:04:37,000 --> 00:04:40,000 và thay đổi nó trong vòng lặp trong khi nếu bạn cần. 68 00:04:40,000 --> 00:04:44,000 Tuy nhiên, trong các chương trình mà bạn đang tham khảo cùng một số lượng ma thuật 69 00:04:44,000 --> 00:04:47,000 hơn và hơn nữa, điều này # xác định cơ chế thực sự tiện dụng 70 00:04:47,000 --> 00:04:52,000 bởi vì bạn chỉ cần thay đổi một thời gian ở phía trên cùng của tập tin nó thường nơi bạn đặt chúng 71 00:04:52,000 --> 00:04:57,000 và sự thay đổi thấm qua phần còn lại của tập tin. 72 00:04:57,000 --> 00:05:02,000 >> Những thứ khác tôi muốn lưu ý trong nhiệm vụ này mà tôi nghĩ rằng trông thật sự tốt đẹp, 73 00:05:02,000 --> 00:05:05,000 một là đặt tên của các biến. 74 00:05:05,000 --> 00:05:14,000 Bạn thấy ở đây chúng ta đã có các biến số nguyên được gọi là hàng và được gọi là chiều cao. 75 00:05:14,000 --> 00:05:20,000 Spaces, băm, nó giúp làm cho mã dễ đọc hơn, 76 00:05:20,000 --> 00:05:25,000 làm cho nó một chút dễ hiểu hơn những gì đang thực sự xảy ra. 77 00:05:25,000 --> 00:05:31,000 Điều này là trái ngược với việc sử dụng, nói, chữ cái ngẫu nhiên 78 00:05:31,000 --> 00:05:35,000 hoặc chỉ gobbledygook hoàn toàn. 79 00:05:35,000 --> 00:05:39,000 Một điều cuối cùng tôi sẽ chỉ ra cho các vòng, 80 00:05:39,000 --> 00:05:45,000 thường những biến iterator, các quầy mà bạn sử dụng cho các vòng, 81 00:05:45,000 --> 00:05:51,000 nó là tiêu chuẩn và thông thường bắt đầu với một trong hai i và j và sau đó k 82 00:05:51,000 --> 00:05:54,000 và đi lên từ đó nếu bạn cần biến hơn, 83 00:05:54,000 --> 00:05:56,000 và điều này chỉ là một quy ước. 84 00:05:56,000 --> 00:05:58,000 Có rất nhiều các công ước. 85 00:05:58,000 --> 00:06:00,000 Nó phụ thuộc vào ngôn ngữ lập trình bạn đang sử dụng. 86 00:06:00,000 --> 00:06:04,000 Nhưng trong C, chúng tôi thường bắt đầu với tôi. 87 00:06:04,000 --> 00:06:08,000 Nó không làm cho cảm giác sử dụng, nói, a hoặc b 88 00:06:08,000 --> 00:06:13,000 tùy thuộc vào tình hình. 89 00:06:13,000 --> 00:06:15,000 Đó là một này. 90 00:06:15,000 --> 00:06:25,000 Nếu bây giờ bạn kéo lên phiên bản 2, bạn sẽ thấy một Mario, 91 00:06:25,000 --> 00:06:29,000 và điều này là tương tự như một trong những khác mà chúng ta chỉ nhìn thấy, 92 00:06:29,000 --> 00:06:32,000 nhưng nó không loại một cái gì đó mát mẻ. 93 00:06:32,000 --> 00:06:38,000 Nếu chúng ta nhìn vào phần này ngay tại đây bên trong bên trong vòng lặp for, 94 00:06:38,000 --> 00:06:44,000 họ đang sử dụng một số cú pháp tìm kiếm điên ở đây ngay trong dòng này. 95 00:06:44,000 --> 00:06:47,000 Điều này được gọi là một nhà điều hành ternary. 96 00:06:47,000 --> 00:06:53,000 Đó là một tuyên bố nếu người nào khác ngưng tụ thành một dòng. 97 00:06:53,000 --> 00:06:57,000 Điều kiện này là một phần trong dấu ngoặc đơn. 98 00:06:57,000 --> 00:07:05,000 Đó là tương đương với nói rằng nếu chiều cao 00:07:10,000 Và sau đó các nội dung rằng nếu khối sẽ là không gian 100 00:07:10,000 --> 00:07:16,000 và sau đó các nội dung khác sẽ là # 101 00:07:16,000 --> 00:07:20,000 Nó cơ bản chỉ định một không gian để biến này. 102 00:07:20,000 --> 00:07:24,000 Nó đặt một không gian trong các nội dung của biến khối, 103 00:07:24,000 --> 00:07:29,000 nếu điều kiện này được đáp ứng, và nếu tình trạng này không được đáp ứng, 104 00:07:29,000 --> 00:07:32,000 sau đó biến khối được # 105 00:07:32,000 --> 00:07:37,000 Và sau đó, tất nhiên, thay vì xây dựng toàn bộ một chuỗi 106 00:07:37,000 --> 00:07:43,000 và in ra tất cả mọi thứ ở cuối giải pháp này in ra một ký tự tại một thời điểm. 107 00:07:43,000 --> 00:07:48,000 Khá mát mẻ. 108 00:07:48,000 --> 00:07:53,000 >> Một vài điều cần xem xét. Chúng tôi sẽ chuyển sang tham lam. 109 00:07:53,000 --> 00:07:58,000 Bây giờ nếu chúng ta nhìn vào tham lam, giải pháp đầu tiên này 110 00:07:58,000 --> 00:08:00,000 sử dụng các # định nghĩa khá một chút. 111 00:08:00,000 --> 00:08:06,000 Chúng tôi đã có một hằng số được xác định cho mỗi số khác nhau trong chương trình này. 112 00:08:06,000 --> 00:08:12,000 Chúng tôi đã có một cent cho mỗi đô la, một cho khu phố, dimes, nickels, và đồng xu, 113 00:08:12,000 --> 00:08:15,000 và bây giờ nếu chúng ta di chuyển xuống và đọc mã, 114 00:08:15,000 --> 00:08:22,000 chúng ta có thể thấy một do-while loop in tiêu chuẩn tất cả mọi thứ. 115 00:08:22,000 --> 00:08:25,000 Loại mấu chốt của vấn đề này đã nhận ra rằng 116 00:08:25,000 --> 00:08:29,000 bạn cần thiết để chuyển đổi các phao mà bạn đọc từ người sử dụng đến một số nguyên 117 00:08:29,000 --> 00:08:32,000 chính xác làm toán, và điều này là bởi vì 118 00:08:32,000 --> 00:08:36,000 với số dấu chấm động, giống như chúng ta đã nói trong bài giảng một thời gian ngắn, 119 00:08:36,000 --> 00:08:41,000 nó không chính xác có thể đại diện cho tất cả các giá trị duy nhất trên dòng số 120 00:08:41,000 --> 00:08:47,000 bởi vì có những giá trị vô hạn từ 3, 3,1 thậm chí. 121 00:08:47,000 --> 00:08:54,000 Bạn có thể có 3,01 và 3,001 và 3,0001, và bạn có thể tiếp tục đi. 122 00:08:54,000 --> 00:09:00,000 Nó chỉ ra bất cứ khi nào bạn đang làm việc bằng tiền, bạn thường muốn chuyển đổi nó 123 00:09:00,000 --> 00:09:05,000 sang định dạng số nguyên để bạn không mất đồng xu và các loại công cụ. 124 00:09:05,000 --> 00:09:09,000 Làm điều đó và làm tròn là chìa khóa. 125 00:09:09,000 --> 00:09:14,000 Giải pháp này sử dụng một thuật toán, hoàn toàn đơn giản tuyệt vời, 126 00:09:14,000 --> 00:09:17,000 giảm đi số lượng cent còn lại, lần đầu tiên theo quý, 127 00:09:17,000 --> 00:09:19,000 sau đó dimes, nickels, sau đó bằng đồng xu, 128 00:09:19,000 --> 00:09:24,000 và thêm vào số lượng tiền xu mỗi lần. 129 00:09:24,000 --> 00:09:31,000 >> Một giải pháp mà chúng ta sẽ thấy, như tôi phóng to và thu nhỏ đi để sửa đổi 4, 130 00:09:31,000 --> 00:09:40,000 đã có một khởi đầu rất giống nhau nhưng div thay vì sử dụng và mod 131 00:09:40,000 --> 00:09:44,000 ngay trên đây để tính toán số lượng cent. 132 00:09:44,000 --> 00:09:50,000 Này, số lượng các khu bằng số lượng xu chia cho 25, 133 00:09:50,000 --> 00:09:53,000 và lý do công trình này là bởi vì chúng tôi đang làm phân chia số nguyên, 134 00:09:53,000 --> 00:09:58,000 vì vậy nó loại bỏ bất kỳ còn lại. 135 00:09:58,000 --> 00:10:02,000 [Sinh viên] chúng tôi có nhận xét tìm kiếm? 136 00:10:02,000 --> 00:10:05,000 Nó thực sự phụ thuộc. 137 00:10:05,000 --> 00:10:08,000 [Sinh viên] Bạn cho ý kiến ​​nhiều hơn so với mã ngay tại đây. 138 00:10:08,000 --> 00:10:16,000 Yeah, và do đó, có một loạt các triết lý khác nhau về điều này. 139 00:10:16,000 --> 00:10:21,000 Triết lý cá nhân của tôi là mã của bạn thực sự là sự thật, 140 00:10:21,000 --> 00:10:24,000 giống như mã của bạn là những gì thực sự thực hiện trên máy tính, 141 00:10:24,000 --> 00:10:29,000 và do đó, mã của bạn nên được như có thể đọc được có thể không đòi hỏi phải như nhiều ý kiến. 142 00:10:29,000 --> 00:10:33,000 Điều đó nói rằng, khi bạn đang làm những điều mà là loại khó khăn toán học 143 00:10:33,000 --> 00:10:38,000 hoặc thuật toán, đó là tốt để nhận xét những người như vậy mà bạn có thể 144 00:10:38,000 --> 00:10:43,000 thêm thêm một chiều, thêm một lớp để bất cứ ai đang đọc mã của bạn. 145 00:10:43,000 --> 00:10:49,000 Trong các giải pháp này, thường họ được nhận xét nhiều hơn chỉ vì 146 00:10:49,000 --> 00:10:52,000 chúng tôi muốn để có thể phân phối chúng và có những người chọn chúng lên 147 00:10:52,000 --> 00:10:56,000 và đọc chúng khá dễ dàng. 148 00:10:56,000 --> 00:11:05,000 Nhưng chắc chắn, tôi sẽ đồng ý rằng đây là nặng. 149 00:11:05,000 --> 00:11:07,000 [Sinh viên] Nhưng khi nghi ngờ, đi nặng hơn? 150 00:11:07,000 --> 00:11:10,000 Khi nghi ngờ, đi nặng hơn. 151 00:11:10,000 --> 00:11:17,000 Một số người đôi khi sẽ nói 0 trả hoặc một cái gì đó như thế. 152 00:11:17,000 --> 00:11:20,000 Tôi nghĩ rằng đó là một nhận xét vô lý. 153 00:11:20,000 --> 00:11:22,000 Rõ ràng rằng những gì đang xảy ra. 154 00:11:22,000 --> 00:11:25,000 Tôi không cần tiếng Anh để nói với tôi rằng. 155 00:11:25,000 --> 00:11:28,000 Đôi khi người ta sẽ viết công cụ như "kthxbai!" 156 00:11:28,000 --> 00:11:32,000 Đó là loại dễ thương nhưng cũng không- 157 00:11:32,000 --> 00:11:35,000 đó không phải là sự khác biệt giữa các điểm bình luận hay không. 158 00:11:35,000 --> 00:11:41,000 Những loại ý kiến ​​chỉ ha, ha. 159 00:11:41,000 --> 00:11:43,000 Cool. 160 00:11:43,000 --> 00:11:48,000 >> Tại thời điểm này, chúng ta hãy bắt đầu làm việc trên các vấn đề Set 3 phần của câu hỏi. 161 00:11:48,000 --> 00:11:52,000 Nếu bạn kéo này lên một lần nữa, 162 00:11:52,000 --> 00:11:55,000 với tuần trước, chúng tôi sẽ không xem quần short trong phần này. 163 00:11:55,000 --> 00:12:00,000 Chúng tôi sẽ cho các bạn làm điều đó vào thời gian riêng của bạn và nói về những câu hỏi. 164 00:12:00,000 --> 00:12:05,000 Nhưng bây giờ trong phần này chúng ta sẽ dành thời gian nhiều hơn một chút 165 00:12:05,000 --> 00:12:11,000 nói về những điều cơ bản mã hóa 166 00:12:11,000 --> 00:12:15,000 như chúng tôi đã làm tuần trước, và thay vào đó, chúng ta sẽ tập trung hơn vào 167 00:12:15,000 --> 00:12:22,000 hơn một chút về lý thuyết, do đó, nói về tìm kiếm nhị phân và sau đó phân loại. 168 00:12:22,000 --> 00:12:27,000 Từ những người bạn của những người đã được sau đây cùng với các bài giảng, 169 00:12:27,000 --> 00:12:30,000 ai đó có thể cho tôi một bản tóm tắt về những gì là sự khác biệt 170 00:12:30,000 --> 00:12:35,000 giữa hệ nhị phân tìm kiếm và tìm kiếm tuyến tính? 171 00:12:35,000 --> 00:12:37,000 Chuyện gì đang xảy ra? Chắc chắn. 172 00:12:37,000 --> 00:12:42,000 Tìm kiếm tuyến tính tìm kiếm thông qua tất cả các phần tử trong danh sách được sắp xếp 173 00:12:42,000 --> 00:12:45,000 một của một của một của một, 174 00:12:45,000 --> 00:12:50,000 và tìm kiếm nhị phân chia danh sách thành 2 nhóm, 175 00:12:50,000 --> 00:12:57,000 kiểm tra nếu giá trị khóa mà bạn đang tìm kiếm lớn hơn hoặc ít hơn giá trị trung điểm 176 00:12:57,000 --> 00:13:00,000 mà bạn vừa tìm thấy, và nếu nó ít hơn, nó đi với danh sách thấp hơn 177 00:13:00,000 --> 00:13:03,000 và rồi chia đó một lần nữa, hiện các chức năng tương tự 178 00:13:03,000 --> 00:13:07,000 tất cả các con đường xuống cho đến khi nó tìm thấy điểm giữa để bằng với giá trị riêng của mình. 179 00:13:07,000 --> 00:13:10,000 Đúng. 180 00:13:10,000 --> 00:13:12,000 >> Tại sao chúng ta quan tâm? 181 00:13:12,000 --> 00:13:20,000 Tại sao chúng ta nói về việc tìm kiếm nhị phân so với tìm kiếm tuyến tính? 182 00:13:20,000 --> 00:13:22,000 Yeah. 183 00:13:22,000 --> 00:13:24,000 Nhị phân là nhanh hơn rất nhiều, vì vậy nếu bạn tăng gấp đôi kích thước của vấn đề 184 00:13:24,000 --> 00:13:27,000 phải mất thêm một bước chứ không phải là nhiều gấp đôi. 185 00:13:27,000 --> 00:13:29,000 Chính xác. 186 00:13:29,000 --> 00:13:31,000 Đó là một câu trả lời tuyệt vời. 187 00:13:31,000 --> 00:13:36,000 Tìm kiếm tuyến tính là rất nhiều kiểm tra một trong những yếu tố cùng một lúc, 188 00:13:36,000 --> 00:13:39,000 và như chúng ta đã thấy những ngày đầu tiên của bài giảng 189 00:13:39,000 --> 00:13:42,000 khi David đã đi qua ví dụ cuốn sách điện thoại của mình 190 00:13:42,000 --> 00:13:45,000 và tách ra một trang của cuốn sách điện thoại tại một thời điểm 191 00:13:45,000 --> 00:13:47,000 và tiếp tục làm điều đó hơn và hơn và hơn một lần nữa, 192 00:13:47,000 --> 00:13:51,000 nó sẽ đưa anh ta một thời gian rất dài để tìm thấy bất cứ ai trong sổ điện thoại, 193 00:13:51,000 --> 00:13:55,000 trừ khi, tất nhiên, ông đang tìm kiếm ai đó ở rất bắt đầu của bảng chữ cái. 194 00:13:55,000 --> 00:14:00,000 Với tìm kiếm nhị phân, bạn có thể đi nhanh hơn rất nhiều, 195 00:14:00,000 --> 00:14:05,000 và nó không phải chỉ hai lần là nhanh hay 3 lần là nhanh hay 4 lần nhanh. 196 00:14:05,000 --> 00:14:13,000 Nhưng vấn đề trở nên nhỏ hơn và nhỏ hơn và nhỏ hơn nhanh hơn nhiều. 197 00:14:13,000 --> 00:14:17,000 Để minh họa điều này, chúng tôi sẽ bắt đầu nói về những gì đang xảy ra 198 00:14:17,000 --> 00:14:21,000 khi chúng tôi viết tìm kiếm nhị phân. 199 00:14:21,000 --> 00:14:27,000 Vấn đề ở bàn tay là nếu tôi có một mảng của các số, 200 00:14:27,000 --> 00:14:40,000 nói, 1, 2, 3, 5, 7, 23, 45, 78, 12.323, 201 00:14:40,000 --> 00:14:47,000 và sau đó 9 với một tấn của số 0 sau nó, 202 00:14:47,000 --> 00:14:52,000 chúng tôi muốn để có thể để tìm ra thực sự nhanh chóng những gì có trong 203 00:14:52,000 --> 00:14:57,000 mảng của các số này. 204 00:14:57,000 --> 00:15:00,000 Tôi biết điều này có vẻ như ngớ ngẩn một chút và một chút contrived, 205 00:15:00,000 --> 00:15:02,000 bởi vì ngay bây giờ nó là. 206 00:15:02,000 --> 00:15:05,000 Chúng tôi có một mảng mà không có yếu tố rất nhiều trong nó, 207 00:15:05,000 --> 00:15:08,000 và nếu tôi yêu cầu một trong các bạn để tìm ra hay không 208 00:15:08,000 --> 00:15:11,000 23 là trong mảng, bạn có thể làm điều đó khá nhanh chóng 209 00:15:11,000 --> 00:15:16,000 chỉ bằng cách liếc nhìn và nói với tôi rằng có hay không. 210 00:15:16,000 --> 00:15:20,000 Tương tự để xem xét là tưởng tượng nếu điều này là, nói, 211 00:15:20,000 --> 00:15:27,000 một bảng tính Excel với 10.000 hàng, 20.000 hàng. 212 00:15:27,000 --> 00:15:31,000 Tất nhiên, bạn có thể làm lệnh hoặc F F kiểm soát và tìm kiếm một cái gì đó lên. 213 00:15:31,000 --> 00:15:33,000 Bạn cũng có thể sử dụng các bộ lọc và các công cụ tìm kiếm, 214 00:15:33,000 --> 00:15:37,000 nhưng nếu bạn đã xem xét thông qua dòng tập tin bằng cách từng dòng, 215 00:15:37,000 --> 00:15:40,000 nó sẽ mất một thời gian dài để tìm thấy nó. 216 00:15:40,000 --> 00:15:42,000 Đó là loại giống như trong ví dụ cuốn sách điện thoại, quá, 217 00:15:42,000 --> 00:15:44,000 không ai nhìn qua trang một cuốn sách điện thoại tại một thời điểm. 218 00:15:44,000 --> 00:15:47,000 Thông thường, họ mở nó giữa, 219 00:15:47,000 --> 00:15:50,000 hoặc trong trường hợp của rất nhiều sách điện thoại và từ điển 220 00:15:50,000 --> 00:15:54,000 bạn thực sự đã keyed vào chữ cái đầu tiên, 221 00:15:54,000 --> 00:16:01,000 bạn lật lá thư đầu tiên và mở và bắt đầu đi qua đó. 222 00:16:01,000 --> 00:16:03,000 >> Nhắc nhở tôi về tên của bạn một lần nữa >> Sam. 223 00:16:03,000 --> 00:16:05,000 Sam. 224 00:16:05,000 --> 00:16:11,000 Như Sam nói, quá trình tìm kiếm tuyến tính là có được rất chậm, 225 00:16:11,000 --> 00:16:15,000 và thay vào đó với tìm kiếm nhị phân, cách công trình này là 226 00:16:15,000 --> 00:16:21,000 mỗi khi chúng tôi đi qua một sự lặp lại của thuật toán tìm kiếm của chúng tôi, 227 00:16:21,000 --> 00:16:27,000 chúng ta sẽ chia danh sách trong một nửa, về cơ bản, 228 00:16:27,000 --> 00:16:33,000 thành hai danh sách nhỏ hơn. 229 00:16:33,000 --> 00:16:39,000 Và sau đó lặp kế tiếp của vòng lặp, chúng ta sẽ phân chia lại một lần nữa 230 00:16:39,000 --> 00:16:44,000 vào các danh sách khác nhỏ hơn. 231 00:16:44,000 --> 00:16:48,000 Như bạn có thể thấy, vấn đề tiếp tục nhận được nhỏ hơn và nhỏ hơn 232 00:16:48,000 --> 00:16:55,000 bởi vì chúng tôi tiếp tục loại bỏ một nửa danh sách mỗi lần duy nhất. 233 00:16:55,000 --> 00:16:59,000 Làm thế nào để loại bỏ công việc? 234 00:16:59,000 --> 00:17:05,000 Cũng như một lời nhắc nhở, những gì chúng tôi đang đi để làm gì nếu chúng tôi là một máy tính 235 00:17:05,000 --> 00:17:11,000 và chúng tôi đã, nói, tìm kiếm số 5 trong danh sách này 236 00:17:11,000 --> 00:17:15,000 là chúng ta sẽ chọn một số ở giữa. 237 00:17:15,000 --> 00:17:26,000 Ở giữa của danh sách này, bởi vì có 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 số, 238 00:17:26,000 --> 00:17:32,000 chúng tôi muốn chọn số ở vị trí thứ 4 hoặc ở vị trí thứ 5, 239 00:17:32,000 --> 00:17:38,000 và chúng tôi gọi đó là giữa của danh sách của chúng tôi. 240 00:17:38,000 --> 00:17:42,000 Chọn số ở giữa. 241 00:17:42,000 --> 00:17:51,000 Sau đó, giống như Sam nói, chúng tôi sẽ kiểm tra để xem nếu con số đó là bằng 242 00:17:51,000 --> 00:17:59,000 số lượng mà chúng tôi muốn để có được hoặc số mong muốn của chúng tôi. 243 00:17:59,000 --> 00:18:06,000 Nếu đó là bằng nhau, sau đó chúng tôi đã tìm thấy nó. Chúng tôi giành chiến thắng. 244 00:18:06,000 --> 00:18:12,000 Nếu nó không bằng nhau, sau đó có một vài trường hợp. 245 00:18:12,000 --> 00:18:15,000 Hai trường hợp hoặc số lượng lớn hơn số lượng chúng tôi đang tìm kiếm tại, 246 00:18:15,000 --> 00:18:19,000 hoặc nó ít hơn. 247 00:18:19,000 --> 00:18:25,000 Nếu nó lớn, chúng tôi di chuyển về bên phải. 248 00:18:25,000 --> 00:18:33,000 Và nếu nó ít hơn, chúng tôi di chuyển sang bên trái. 249 00:18:33,000 --> 00:18:41,000 Và sau đó chúng tôi lặp lại toàn bộ quá trình một lần nữa 250 00:18:41,000 --> 00:18:48,000 trên một nửa hoặc nửa bên phải bên trái của danh sách. 251 00:18:48,000 --> 00:18:51,000 >> Vấn đề đầu tiên trong phần ngày nay là tìm hiểu 252 00:18:51,000 --> 00:18:55,000 làm thế nào chúng ta có thể thực sự bắt đầu để thể hiện điều này trong C code. 253 00:18:55,000 --> 00:18:58,000 Chúng tôi đã có giả ở đây. 254 00:18:58,000 --> 00:19:04,000 Những gì chúng tôi sẽ bắt đầu làm là tôi sẽ kéo lên không gian một thương hiệu mới, 255 00:19:04,000 --> 00:19:09,000 cứu sửa đổi này để chúng tôi có những ghi chú cho sau này, 256 00:19:09,000 --> 00:19:20,000 chúng tôi sẽ xóa tất cả những điều này, và sau đó sao chép và dán từ các thiết lập vấn đề 257 00:19:20,000 --> 00:19:26,000 thông tin này vào không gian của chúng tôi, và hy vọng điều này không phá vỡ. 258 00:19:26,000 --> 00:19:28,000 Hoàn hảo. 259 00:19:28,000 --> 00:19:33,000 Nếu bạn làm điều đó, sao chép và dán mã này vào không gian mới của bạn, 260 00:19:33,000 --> 00:19:43,000 vào một trống. 261 00:19:43,000 --> 00:19:47,000 Chúng ta hãy thử Daniel. Nếu bạn biên dịch và chạy chương trình này, nó hoạt động? 262 00:19:47,000 --> 00:19:49,000 Số >> nói gì vậy? 263 00:19:49,000 --> 00:19:53,000 Nó nói kiểm soát đạt đến kết thúc của chức năng không có khoảng trống. 264 00:19:53,000 --> 00:19:55,000 Yeah, vì vậy hãy để tôi thử chạy nó. 265 00:19:55,000 --> 00:19:59,000 Bạn đã nhìn thấy điều này trước khi? Bạn có biết điều này có nghĩa là gì? 266 00:19:59,000 --> 00:20:01,000 Được rồi, chúng ta hãy khảo sát tỉ mỉ một chút. 267 00:20:01,000 --> 00:20:10,000 Nó nói tại file.c on line 9, cột 1, chúng tôi có một lỗi, giống như bạn nói, 268 00:20:10,000 --> 00:20:16,000 và nó nói rằng nó bắt nguồn từ những cảnh báo lỗi và cảnh báo kiểu trả về. 269 00:20:16,000 --> 00:20:18,000 Nó trông giống như một cái gì đó đang xảy ra với kiểu trả về, có ý nghĩa. 270 00:20:18,000 --> 00:20:21,000 Chúng tôi đã có một chức năng không-không có giá trị, có nghĩa là chúng tôi đã có một chức năng 271 00:20:21,000 --> 00:20:24,000 mà không trả lại void. 272 00:20:24,000 --> 00:20:27,000 Một chức năng void là một trông như thế này: 273 00:20:27,000 --> 00:20:35,000 void foo (), và đó là khoảng trống vì kiểu trả về là void, 274 00:20:35,000 --> 00:20:38,000 có nghĩa là nếu chúng ta có một cái gì đó ở đây 275 00:20:38,000 --> 00:20:45,000 như trả lại 1, chúng tôi nhận được một lỗi trình biên dịch cho. 276 00:20:45,000 --> 00:20:49,000 Tuy nhiên, chúng tôi có một chức năng không trống. 277 00:20:49,000 --> 00:20:51,000 Không vô hiệu chức năng của chúng tôi trong trường hợp này là chức năng tìm kiếm của chúng tôi 278 00:20:51,000 --> 00:20:56,000 bởi vì nó có một kiểu trả về của bool. 279 00:20:56,000 --> 00:20:59,000 Khi nó nói rằng kiểm soát đạt đến kết thúc của một hàm không có giá trị không, 280 00:20:59,000 --> 00:21:02,000 đó là bởi vì tìm kiếm không có một tuyên bố trở lại. 281 00:21:02,000 --> 00:21:04,000 Nó không trả lại bất cứ điều gì của bool loại. 282 00:21:04,000 --> 00:21:09,000 >> Chúng ta có thể khắc phục điều đó, và bạn nghĩ gì 283 00:21:09,000 --> 00:21:13,000 tìm kiếm phải trả lại theo mặc định? 284 00:21:13,000 --> 00:21:16,000 Điều gì cần được trả lại mặc định giá trị của tìm kiếm? 285 00:21:16,000 --> 00:21:19,000 Bởi vì đó là những gì chúng ta có thể đặt ở cuối. 286 00:21:19,000 --> 00:21:21,000 Charlotte, làm bạn có bất kỳ? 287 00:21:21,000 --> 00:21:23,000 Đúng hay sai >> Đúng hay sai? 288 00:21:23,000 --> 00:21:26,000 Mà một trong những? 289 00:21:26,000 --> 00:21:28,000 False. Tôi không biết. 290 00:21:28,000 --> 00:21:30,000 False? Hãy thử lại nó. 291 00:21:30,000 --> 00:21:32,000 Tại sao bạn sẽ nói return false? Đó là trực giác tuyệt vời. 292 00:21:32,000 --> 00:21:35,000 Charlotte] Tôi không biết. 293 00:21:35,000 --> 00:21:39,000 Chúng tôi sẽ quay trở lại sai trong trường hợp này vì điều này sẽ được mặc định của chúng tôi 294 00:21:39,000 --> 00:21:44,000 nếu vì một lý do nào đó trong danh sách là rỗng hoặc kim 295 00:21:44,000 --> 00:21:46,000 mà chúng tôi đang tìm kiếm không tồn tại. 296 00:21:46,000 --> 00:21:50,000 Sau đó, vào cuối, nếu chúng ta không trở lại đúng sự thật trước đó trong chức năng này, 297 00:21:50,000 --> 00:21:55,000 chúng tôi luôn luôn biết rằng chức năng này sẽ nói nope, nó không có trong mảng. 298 00:21:55,000 --> 00:21:58,000 Nó không phải trong đống cỏ. 299 00:21:58,000 --> 00:22:03,000 Bây giờ nếu chúng tôi biên dịch và chạy nó cho tôi lưu này, vì vậy chúng ta có thể kéo nó lên. 300 00:22:03,000 --> 00:22:08,000 Bây giờ nếu chúng ta biên dịch và chạy chương trình của chúng tôi, nó được xây dựng. 301 00:22:08,000 --> 00:22:12,000 Chúng tôi nhận được dấu nhắc nhỏ của chúng tôi. 302 00:22:12,000 --> 00:22:20,000 Nếu tôi nhấn 4-uh-oh. 303 00:22:20,000 --> 00:22:25,000 Nó không in ra bất cứ điều gì. Có vẻ như tất cả mọi thứ đã kết thúc không sao. 304 00:22:25,000 --> 00:22:35,000 Chúng tôi đã có để điền vào. 305 00:22:35,000 --> 00:22:39,000 Chúng tôi nói về thuật toán trong giả một chút trước. 306 00:22:39,000 --> 00:22:44,000 Hãy cho tôi thấy, tiết kiệm, 307 00:22:44,000 --> 00:22:49,000 và tôi sẽ kéo mà thuật toán trở lại một lần nữa. 308 00:22:49,000 --> 00:22:51,000 Hãy đánh anh chàng này. Nope. 309 00:22:51,000 --> 00:22:58,000 Có nó được. 310 00:22:58,000 --> 00:23:03,000 Làm thế nào để chúng ta làm điều này? 311 00:23:03,000 --> 00:23:11,000 Điều gì sẽ là một chiến lược tốt để bắt đầu mã này? 312 00:23:11,000 --> 00:23:16,000 Bạn phải chọn một số ở giữa. 313 00:23:16,000 --> 00:23:23,000 Làm thế nào để chúng ta chọn một số ở giữa của một mảng? 314 00:23:23,000 --> 00:23:25,000 Bất cứ lời đề nghị? 315 00:23:25,000 --> 00:23:27,000 [Sinh viên] strlen chia cho 2. 316 00:23:27,000 --> 00:23:32,000 Strlen chia cho 2. Đó là một tuyệt vời. 317 00:23:32,000 --> 00:23:35,000 Strlen công trình với các loại đặc biệt của mảng. 318 00:23:35,000 --> 00:23:38,000 Những mảng? 319 00:23:38,000 --> 00:23:44,000 Chuỗi mảng, mảng ký tự. 320 00:23:44,000 --> 00:23:48,000 Nó là cùng một loại khái niệm mà chúng ta muốn áp dụng, 321 00:23:48,000 --> 00:23:52,000 nhưng chúng ta không thể sử dụng strlen vì chúng ta không có một mảng các ký tự. 322 00:23:52,000 --> 00:23:55,000 Chúng tôi có một mảng ints. 323 00:23:55,000 --> 00:23:58,000 Nhưng strlen không nhận được gì cho chúng ta? 324 00:23:58,000 --> 00:24:01,000 Bạn có biết những gì nó được cho chúng ta? 325 00:24:01,000 --> 00:24:03,000 [Sinh viên] strlen chúng ta có được chiều dài. 326 00:24:03,000 --> 00:24:05,000 Chính xác, chúng ta có được chiều dài. 327 00:24:05,000 --> 00:24:09,000 Strlen được chiều dài của mảng cho chúng tôi. 328 00:24:09,000 --> 00:24:14,000 >> Làm thế nào để chúng ta nhận được rằng trong chương trình tìm kiếm nhị phân của chúng tôi? 329 00:24:14,000 --> 00:24:18,000 Làm thế nào bạn sẽ nhận được chiều dài của một mảng? 330 00:24:18,000 --> 00:24:20,000 [Sinh viên] strlen? 331 00:24:20,000 --> 00:24:25,000 Bạn có thể có được chiều dài của một mảng chuỗi định dạng đúng C với strlen. 332 00:24:25,000 --> 00:24:31,000 , Tuy nhiên, vấn đề là chúng ta không có một mảng chuỗi. 333 00:24:31,000 --> 00:24:36,000 Nếu chúng ta nhìn lại đoạn mã này, chúng tôi có mảng số nguyên này. 334 00:24:36,000 --> 00:24:38,000 Làm thế nào để chúng ta biết bao lâu nó? 335 00:24:38,000 --> 00:24:44,000 [Sinh viên] Có một tương đương cho thiết bị đầu cuối, như l int hoặc một cái gì đó? 336 00:24:44,000 --> 00:24:49,000 Nó chỉ ra có thực sự không phải là, và như vậy trong một cách, đây là 337 00:24:49,000 --> 00:24:52,000 một trong những điều đó là tốt để biết về C, 338 00:24:52,000 --> 00:24:57,000 rằng không có cách nào để có được chiều dài của một mảng 339 00:24:57,000 --> 00:24:59,000 nếu tất cả những gì tôi cung cấp cho bạn là mảng. 340 00:24:59,000 --> 00:25:02,000 Lý do nó hoạt động với chuỗi, lý do strlen công trình, 341 00:25:02,000 --> 00:25:06,000 là bởi vì nếu một chuỗi được định dạng, 342 00:25:06,000 --> 00:25:12,000 nó sẽ có đó đặc biệt \ 0 ký tự ở cuối. 343 00:25:12,000 --> 00:25:16,000 >> Bạn cũng có thể tưởng tượng nếu bạn có một chuỗi không đúng định dạng 344 00:25:16,000 --> 00:25:20,000 và không có \ 0 ký tự có, sau đó toàn bộ điều không làm việc. 345 00:25:20,000 --> 00:25:22,000 [Sinh viên] Bạn có thể thêm \ 0? 346 00:25:22,000 --> 00:25:24,000 Chúng ta có thể trong trường hợp này. 347 00:25:24,000 --> 00:25:29,000 Chúng ta có thể thêm một số loại \ 0 348 00:25:29,000 --> 00:25:33,000 hoặc một số loại biểu nhân vật và sau đó sử dụng. 349 00:25:33,000 --> 00:25:36,000 Nhưng đó là không hoàn toàn đi làm việc 350 00:25:36,000 --> 00:25:40,000 bởi vì 0 \ cho một loại char, 351 00:25:40,000 --> 00:25:43,000 và ở đây chúng tôi đã có ints. 352 00:25:43,000 --> 00:25:46,000 Điều khác là nếu chúng ta sử dụng một giá trị đặc biệt 353 00:25:46,000 --> 00:25:49,000 như -1 để đánh dấu sự kết thúc của một mảng 354 00:25:49,000 --> 00:25:54,000 sau đó chúng tôi không bao giờ có thể lưu trữ một -1 trong mảng số nguyên của chúng tôi. 355 00:25:54,000 --> 00:25:56,000 Chúng tôi bị mắc kẹt. 356 00:25:56,000 --> 00:26:00,000 Nó chỉ ra rằng cách duy nhất để có được chiều dài 357 00:26:00,000 --> 00:26:03,000 của một mảng trong C là để thực sự nhớ nó 358 00:26:03,000 --> 00:26:08,000 khi bạn cài đặt nó và sau đó vượt qua nó xung quanh với mảng 359 00:26:08,000 --> 00:26:14,000 để bất cứ khi nào tôi có một chức năng mà sẽ làm một số công việc 360 00:26:14,000 --> 00:26:18,000 trên một mảng số nguyên hoặc nổi hoặc tăng gấp đôi hoặc những gì có bạn, 361 00:26:18,000 --> 00:26:22,000 Tôi cũng cần phải cung cấp cho các chức năng chiều dài của mảng, 362 00:26:22,000 --> 00:26:26,000 và đó là chính xác những gì chúng tôi đã thực hiện ở đây trong chức năng tìm kiếm. 363 00:26:26,000 --> 00:26:30,000 Nếu bạn nhìn, những gì chúng tôi đã làm khi chúng ta vượt qua trong mảng của chúng tôi ở đây, 364 00:26:30,000 --> 00:26:36,000 chúng tôi cũng vượt qua trong chiều dài, kích thước. 365 00:26:36,000 --> 00:26:41,000 Nó chỉ xảy ra mà chúng tôi đã được gọi là biến này ở đây, 366 00:26:41,000 --> 00:26:43,000 tham số này hoặc đối số. 367 00:26:43,000 --> 00:26:46,000 Điều này được gọi là danh sách đối số của một chức năng hoặc danh sách tham số, 368 00:26:46,000 --> 00:26:51,000 và còn được gọi là đối số hoặc các thông số. 369 00:26:51,000 --> 00:26:53,000 Số người sử dụng thuật ngữ khác nhau tại các thời điểm khác nhau. 370 00:26:53,000 --> 00:26:55,000 Tôi đôi khi trao đổi bản thân mình. 371 00:26:55,000 --> 00:27:00,000 Nó chỉ như vậy sẽ xảy ra rằng biến này ở đây được đặt tên tương tự 372 00:27:00,000 --> 00:27:03,000 này # xác định ở đây. 373 00:27:03,000 --> 00:27:06,000 Nhưng chúng không phải là điều tương tự. 374 00:27:06,000 --> 00:27:11,000 Vốn không thành vấn đề. 375 00:27:11,000 --> 00:27:14,000 >> Nếu bạn nhìn vào những gì xảy ra ở đây, chúng ta khai báo 376 00:27:14,000 --> 00:27:18,000 mảng int của chúng tôi, mà chúng tôi đã gọi là số. 377 00:27:18,000 --> 00:27:23,000 Chúng tôi đã cho nó kích thước của chúng tôi, tương ứng của chúng tôi # xác định ở đầu trang. 378 00:27:23,000 --> 00:27:27,000 Nó sẽ là 8. 379 00:27:27,000 --> 00:27:35,000 Và sau đó khi chúng tôi sau đó gọi chức năng tìm kiếm của chúng tôi dưới đây, 380 00:27:35,000 --> 00:27:40,000 chúng tôi vượt qua trong số chúng ta muốn tìm kiếm, mà chúng tôi đã nhắc nhở, 381 00:27:40,000 --> 00:27:43,000 nhận được từ người sử dụng. 382 00:27:43,000 --> 00:27:46,000 Chúng tôi vượt qua trong mảng, con số này, 383 00:27:46,000 --> 00:27:51,000 và sau đó chúng tôi cũng có để vượt qua trong kích thước của mảng, 384 00:27:51,000 --> 00:27:57,000 và sau đó được lưu trữ giá trị của kích thước 8 385 00:27:57,000 --> 00:28:01,000 hoặc thông qua kích thước này số nguyên được gọi là biến. 386 00:28:01,000 --> 00:28:08,000 Chúng tôi có các kích thước của mảng. 387 00:28:08,000 --> 00:28:11,000 Bây giờ nếu chúng ta trở lại những gì chúng ta đã nói về trước đó, 388 00:28:11,000 --> 00:28:14,000 Tôi nghĩ rằng Missy đưa ra quan điểm rằng những gì chúng tôi cần làm là có được chiều dài của mảng 389 00:28:14,000 --> 00:28:20,000 và chia nó cho 2, và sẽ cung cấp cho chúng tôi là trung điểm. 390 00:28:20,000 --> 00:28:22,000 Hãy xem. 391 00:28:22,000 --> 00:28:25,000 Tôi có thể có ai đó viết này và lưu nó trong không gian của họ? 392 00:28:25,000 --> 00:28:27,000 Làm thế nào về Leila? 393 00:28:27,000 --> 00:28:31,000 Tôi có thể có bạn viết điều này trong? 394 00:28:31,000 --> 00:28:35,000 Viết những dòng đầu tiên, nơi bạn có chiều dài của mảng và trung điểm 395 00:28:35,000 --> 00:28:41,000 và lưu nó trong một biến mới. 396 00:28:41,000 --> 00:28:44,000 Tôi sẽ cung cấp cho bạn một vài giây. Bạn đã sẵn sàng? 397 00:28:44,000 --> 00:28:46,000 [Sinh viên không nghe được] 398 00:28:46,000 --> 00:28:50,000 Chắc chắn, tôi có thể tính toán trung điểm 399 00:28:50,000 --> 00:28:55,000 của mảng haystack bên trong chức năng tìm kiếm 400 00:28:55,000 --> 00:29:03,000 sử dụng chiều dài của mảng haystack, đó là biến kích thước? 401 00:29:03,000 --> 00:29:08,000 Không có gì khó ở đây. 402 00:29:08,000 --> 00:29:12,000 [Leila] kích thước / 2 và chỉ 403 00:29:12,000 --> 00:29:17,000 Và lưu nó, và nhấn nút Save ở đây ở đầu trang, 404 00:29:17,000 --> 00:29:19,000 và chúng tôi sẽ kéo nó lên. 405 00:29:19,000 --> 00:29:22,000 Hoàn hảo. 406 00:29:22,000 --> 00:29:28,000 Hiện chúng tôi đi. Awesome. 407 00:29:28,000 --> 00:29:30,000 >> Như là, điều này sẽ biên dịch? 408 00:29:30,000 --> 00:29:32,000 [Leila] Không, nó cần cao hơn. 409 00:29:32,000 --> 00:29:34,000 [Nate] Yeah, vì vậy những gì chúng ta cần phải làm gì? 410 00:29:34,000 --> 00:29:36,000 [Leila] Cũng giống như điểm giữa int hoặc một cái gì đó. 411 00:29:36,000 --> 00:29:41,000 Awesome. Yeah, chúng ta hãy làm điều đó, int trung điểm = kích thước. 412 00:29:41,000 --> 00:29:44,000 Điều này sẽ biên dịch? 413 00:29:44,000 --> 00:29:47,000 Hãy xóa bình luận này và làm cho nó ra khỏi con đường. 414 00:29:47,000 --> 00:29:50,000 Điều gì sẽ không biên dịch về điều này? 415 00:29:50,000 --> 00:29:52,000 Chúng tôi sẽ không làm bất cứ điều gì với số nguyên, 416 00:29:52,000 --> 00:29:55,000 vì vậy chúng ta cần phải in nó hoặc một cái gì đó như thế. 417 00:29:55,000 --> 00:29:58,000 Yeah, chính xác. 418 00:29:58,000 --> 00:30:00,000 Chúng tôi sẽ nhận được một biến không sử dụng. 419 00:30:00,000 --> 00:30:02,000 Những gì người khác không phải là đi làm việc về điều này? 420 00:30:02,000 --> 00:30:06,000 Tôi nghĩ rằng bạn nói điều gì đó, Sam. Dấu chấm phẩy. 421 00:30:06,000 --> 00:30:08,000 Yeah, tôi là thiếu những dấu chấm phẩy. 422 00:30:08,000 --> 00:30:14,000 Nó sẽ là một điều không đổi trong suốt quá trình của thuật ngữ này. 423 00:30:14,000 --> 00:30:17,000 Điều cuối cùng tôi sẽ làm là tôi sẽ đưa một số không gian màu trắng hai bên 424 00:30:17,000 --> 00:30:23,000 của nhà điều hành này ở đây, vì đó là thường làm thế nào chúng ta làm điều đó 425 00:30:23,000 --> 00:30:26,000 theo hướng dẫn phong cách của chúng tôi. 426 00:30:26,000 --> 00:30:29,000 Chúng tôi đã có trung điểm của mảng của chúng tôi. 427 00:30:29,000 --> 00:30:32,000 Bây giờ nếu chúng ta nhớ lại thuật toán của chúng tôi, 428 00:30:32,000 --> 00:30:37,000 bước thứ hai mà chúng tôi phải làm khi chúng tôi có trung điểm là gì? 429 00:30:37,000 --> 00:30:42,000 [Sinh viên] Nếu nó lớn không nghe được. 430 00:30:42,000 --> 00:30:48,000 Yeah, vì vậy chúng ta phải làm một số loại so sánh, và chúng tôi đang so sánh những gì ở đây? 431 00:30:48,000 --> 00:30:53,000 Bạn nói rằng nếu nó lớn hơn. Trong câu đó đề cập đến là gì? 432 00:30:53,000 --> 00:30:57,000 Số lượng mà đi lên, nếu đó là lớn hơn so với trung điểm, sau đó đi đến mảng? 433 00:30:57,000 --> 00:31:05,000 Chính xác, do đó, số lượng mà đi lên khi chúng ta- 434 00:31:05,000 --> 00:31:10,000 Kim, vì vậy chúng tôi đang so sánh kim, 435 00:31:10,000 --> 00:31:12,000 và chúng tôi đang so sánh với kim? 436 00:31:12,000 --> 00:31:15,000 Bởi vì kim là những gì chúng tôi đang tìm kiếm. 437 00:31:15,000 --> 00:31:18,000 Chúng tôi đang so sánh nó để có được trung điểm. 438 00:31:18,000 --> 00:31:21,000 >> Nhưng nó có ý nghĩa để kiểm tra xem 439 00:31:21,000 --> 00:31:27,000 nếu kim = điểm giữa? 440 00:31:27,000 --> 00:31:32,000 Điều đó làm cho tinh thần? 441 00:31:32,000 --> 00:31:35,000 Không ai không đồng ý? 442 00:31:35,000 --> 00:31:40,000 Hãy cung cấp cho nó một thử, nếu (kim == trung điểm). 443 00:31:40,000 --> 00:31:42,000 [Sinh viên] printf bạn thấy nó. 444 00:31:42,000 --> 00:31:51,000 [Nate] printf ("Chúng tôi đã tìm thấy nó \ n"); 445 00:31:51,000 --> 00:31:56,000 Nếu không - Tôi sẽ bắt đầu làm một cái gì đó khác nhau ở đây. 446 00:31:56,000 --> 00:32:00,000 Tôi sẽ bắt đầu đặt niềng răng xung quanh nếu báo cáo tất cả các thời gian 447 00:32:00,000 --> 00:32:05,000 chỉ bởi vì nếu chúng ta thêm nhiều công cụ, sau đó 448 00:32:05,000 --> 00:32:07,000 chúng tôi không nhận được các trình biên dịch. 449 00:32:07,000 --> 00:32:09,000 Yeah, Sam. Bạn đã có một điểm. 450 00:32:09,000 --> 00:32:12,000 Vấn đề là trung điểm đại diện cho một vị trí trong mảng, 451 00:32:12,000 --> 00:32:15,000 nhưng bạn có thể có được nó để đại diện cho giá trị ở vị trí đó của mảng. 452 00:32:15,000 --> 00:32:17,000 Đó là một điểm tuyệt vời. 453 00:32:17,000 --> 00:32:19,000 Có phải tất cả mọi người nghe những gì Sam nói? 454 00:32:19,000 --> 00:32:22,000 Ông cho biết trung điểm đó như là 455 00:32:22,000 --> 00:32:28,000 chỉ đại diện cho một vị trí trong mảng, nhưng nó không phải là yếu tố thực tế trong mảng. 456 00:32:28,000 --> 00:32:30,000 Nếu bạn nghĩ về các mã như được viết ngay bây giờ, 457 00:32:30,000 --> 00:32:35,000 nếu chúng ta nhìn vào mảng này xuống đây, trong đó có 8 yếu tố trong nó, 458 00:32:35,000 --> 00:32:39,000 giá trị của điểm giữa để được chức năng này là gì? 459 00:32:39,000 --> 00:32:41,000 [Sinh viên] 4. 460 00:32:41,000 --> 00:32:45,000 [Nate] 4. 461 00:32:45,000 --> 00:32:51,000 Nếu chúng ta nhìn cho số 4 - 462 00:32:51,000 --> 00:32:54,000 và chúng tôi chỉ có thể chạy mã này và đặt một khuôn mặt nhỏ bé đáng buồn ở đây 463 00:32:54,000 --> 00:32:58,000 bởi vì chúng tôi đã không tìm thấy nó nếu chúng ta chạy mã này 464 00:32:58,000 --> 00:33:04,000 như là ngay bây giờ, tải lên nó, xây dựng, cho phép tôi di chuyển xuống, 465 00:33:04,000 --> 00:33:09,000 và nếu chúng ta nhìn cho số 4, 466 00:33:09,000 --> 00:33:18,000 chúng tôi tìm thấy nó, nhưng chúng tôi đã không có được điều này printf có. 467 00:33:18,000 --> 00:33:23,000 Một lý do là chúng tôi đã không trở lại đúng sự thật, 468 00:33:23,000 --> 00:33:26,000 nhưng chúng tôi đã thực sự tìm thấy số 4? 469 00:33:26,000 --> 00:33:28,000 Và Sam nói không. 470 00:33:28,000 --> 00:33:31,000 Chúng tôi đã tìm được gì? 471 00:33:31,000 --> 00:33:35,000 Chúng tôi thực sự tìm thấy điểm giữa, mà nếu chúng ta nhìn vào mảng xuống đây, 472 00:33:35,000 --> 00:33:38,000 nó sẽ là phần tử tại chỉ số 4 mà chúng tôi đang tìm kiếm, 473 00:33:38,000 --> 00:33:42,000 là 23. 474 00:33:42,000 --> 00:33:46,000 >> Làm thế nào để chúng ta thực sự có được yếu tố đó tại trung điểm 475 00:33:46,000 --> 00:33:48,000 và không chỉ là trung điểm riêng của mình? 476 00:33:48,000 --> 00:33:52,000 [Sinh viên] Chúng tôi sẽ nhập char hoặc một cái gì đó? 477 00:33:52,000 --> 00:33:55,000 Điều gì sẽ làm, chỉ vì tò mò? 478 00:33:55,000 --> 00:33:57,000 Bạn có thể xây dựng thêm một chút? 479 00:33:57,000 --> 00:34:02,000 Bạn có để biến đổi các vị trí vào số lượng, 480 00:34:02,000 --> 00:34:05,000 vì vậy bạn đã có để làm cho một số kết nối Tôi nghĩ rằng đó là char, nhưng nó có thể không. 481 00:34:05,000 --> 00:34:07,000 Vâng, đó là một điểm tốt. 482 00:34:07,000 --> 00:34:12,000 Chúng tôi đã làm rất nhiều này vị trí chuyển đổi thành các ký tự, các ký tự, 483 00:34:12,000 --> 00:34:14,000 trong hai bộ vấn đề đầu tiên. 484 00:34:14,000 --> 00:34:18,000 Nó chỉ ra rằng ở đây, điều này là gần như tương tự 485 00:34:18,000 --> 00:34:24,000 truy cập các ký tự thứ i trong một chuỗi, nếu có ý nghĩa. 486 00:34:24,000 --> 00:34:30,000 Ở đây chúng tôi muốn truy cập vào các phần tử trung điểm. 487 00:34:30,000 --> 00:34:34,000 Làm thế nào để chúng ta làm điều đó? 488 00:34:34,000 --> 00:34:39,000 Kevin, làm bạn có bất cứ lời đề nghị làm thế nào chúng ta có thể làm điều đó? 489 00:34:39,000 --> 00:34:44,000 Bạn có thể làm haystack, mở khung, giữa, đóng khung. 490 00:34:44,000 --> 00:34:46,000 Bạn có thể viết cho chúng ta? 491 00:34:46,000 --> 00:34:51,000 Lưu nó ở đây, và chúng tôi sẽ kéo mà lên. 492 00:34:51,000 --> 00:34:56,000 Chúng tôi đang tìm kiếm ở dòng 9, 493 00:34:56,000 --> 00:34:59,000 và chúng tôi nhận ra rằng chúng tôi không muốn so sánh kim vào trung điểm, 494 00:34:59,000 --> 00:35:03,000 nhưng thay vào đó, chúng tôi muốn so sánh kim 495 00:35:03,000 --> 00:35:07,000 các yếu tố ở điểm giữa vị trí trong mảng haystack của chúng tôi. 496 00:35:07,000 --> 00:35:10,000 Cool. 497 00:35:10,000 --> 00:35:12,000 Hiện chúng tôi đi. 498 00:35:12,000 --> 00:35:15,000 Yeah, trông khá tốt, nếu (kim == haystack [trung điểm]). 499 00:35:15,000 --> 00:35:18,000 Chúng tôi đã tìm thấy nó. 500 00:35:18,000 --> 00:35:22,000 Bây giờ nếu chúng ta chạy lại mã we'll lên một chút-bit 501 00:35:22,000 --> 00:35:26,000 nó biên dịch, nó chạy, và bây giờ nếu chúng ta nhìn cho 4, 502 00:35:26,000 --> 00:35:30,000 chúng tôi đã không tìm thấy nó bởi vì bây giờ chúng tôi đang thực sự nhận số 23. 503 00:35:30,000 --> 00:35:33,000 Chúng tôi đang nhận được giá trị 23, và đó là những gì chúng ta đang so với kim của chúng tôi. 504 00:35:33,000 --> 00:35:35,000 Nhưng đó là tốt. Đó là một bước đi đúng hướng. 505 00:35:35,000 --> 00:35:37,000 >> Đó là những gì chúng tôi đang cố gắng làm. 506 00:35:37,000 --> 00:35:40,000 Chúng tôi không cố gắng để so sánh kim so với các vị trí trong mảng 507 00:35:40,000 --> 00:35:44,000 mà là chống lại các yếu tố thực tế trong mảng. 508 00:35:44,000 --> 00:35:49,000 Nếu chúng ta nhìn lại một lần nữa tại bước tiếp theo trong thuật toán của chúng tôi, 509 00:35:49,000 --> 00:35:51,000 bước tiếp theo là gì? 510 00:35:51,000 --> 00:35:57,000 Leila đã đề cập đến nó một thời gian ngắn. 511 00:35:57,000 --> 00:36:00,000 [Sinh viên] Kiểm tra xem nếu nó lớn hơn hoặc nhỏ hơn và sau đó quyết định cách để di chuyển. 512 00:36:00,000 --> 00:36:03,000 [Nate] Yeah, vậy làm thế nào chúng tôi sẽ làm điều đó? 513 00:36:03,000 --> 00:36:07,000 Bạn có thể đặt trong một số-sẽ tiết kiệm này sửa đổi, 514 00:36:07,000 --> 00:36:13,000 và sau đó nếu bạn đặt trong một số ngành, nghề sẽ làm điều đó. 515 00:36:13,000 --> 00:36:15,000 Yeah, Charlotte >> Tôi có một câu hỏi. 516 00:36:15,000 --> 00:36:19,000 Nên nó không được trung điểm - 1 bởi vì điều đầu tiên là 517 00:36:19,000 --> 00:36:26,000 nó là 0 lập chỉ mục, vì vậy nếu chúng ta đặt 4, đó không phải là thực sự là nhân vật chúng tôi đang tìm kiếm? 518 00:36:26,000 --> 00:36:30,000 Có, và các vấn đề khác với đó là- 519 00:36:30,000 --> 00:36:35,000 đó là một nắm bắt tuyệt vời, bởi vì những gì sẽ xảy ra có thể 520 00:36:35,000 --> 00:36:42,000 nếu chúng ta tiếp tục di chuyển và chúng tôi không bao giờ điều chỉnh ban đầu? 521 00:36:42,000 --> 00:36:46,000 Tôi đoán những gì chúng ta có thể kết thúc làm là cố gắng để truy cập 522 00:36:46,000 --> 00:36:49,000 các yếu tố ở vị trí thứ 8 của mảng, 523 00:36:49,000 --> 00:36:53,000 trong trường hợp này không tồn tại. 524 00:36:53,000 --> 00:36:56,000 Chúng tôi sẽ muốn làm một số loại kế toán thực tế 525 00:36:56,000 --> 00:36:59,000 rằng chúng ta có một số chỉ mục zero. 526 00:36:59,000 --> 00:37:05,000 Charlotte] Xin lỗi, tôi có nghĩa là trung điểm - 1 trong dấu ngoặc vuông. 527 00:37:05,000 --> 00:37:08,000 Chúng ta có thể làm điều đó. 528 00:37:08,000 --> 00:37:10,000 Chúng tôi sẽ trở lại vấn đề này chỉ là một chút. 529 00:37:10,000 --> 00:37:13,000 Khi chúng tôi bắt đầu để có được đến vòng lặp thực tế, 530 00:37:13,000 --> 00:37:16,000 đó là khi chúng ta thực sự sẽ thấy điều này đi vào chơi. 531 00:37:16,000 --> 00:37:21,000 Trong thời gian này, chúng ta có thể làm điều này, nhưng bạn hoàn toàn đúng. 532 00:37:21,000 --> 00:37:28,000 Đó không lập chỉ mục sẽ có một hiệu ứng mà chúng ta cần phải chiếm. 533 00:37:28,000 --> 00:37:30,000 Hãy xem. 534 00:37:30,000 --> 00:37:34,000 >> Làm thế nào là lớn hơn, nhỏ hơn? 535 00:37:34,000 --> 00:37:36,000 [Sinh viên] làm thế nào để làm các việc lớn hơn, nhỏ hơn một phần. 536 00:37:36,000 --> 00:37:41,000 Tôi chỉ không chắc chắn những gì để in nếu bạn thấy rằng nó là ít hơn điểm giữa đống cỏ khô hoặc lớn hơn. 537 00:37:41,000 --> 00:37:43,000 Ở đây tôi có thể tiết kiệm những gì I've- 538 00:37:43,000 --> 00:37:47,000 [Nate] Yeah, nếu bạn lưu những gì bạn đã có, và chúng tôi sẽ kéo nó lên. 539 00:37:47,000 --> 00:37:49,000 Hiện chúng tôi đi. 540 00:37:49,000 --> 00:37:51,000 [Sinh viên] Và tôi đặt dấu hỏi cho những gì tôi không biết. 541 00:37:51,000 --> 00:37:54,000 [Nate] sẽ rất tốt. 542 00:37:54,000 --> 00:37:58,000 Ở đây chúng tôi đã có dấu hỏi bởi vì chúng tôi vẫn không biết 543 00:37:58,000 --> 00:38:06,000 những gì chúng ta sẽ khá làm. 544 00:38:06,000 --> 00:38:12,000 Những gì chúng tôi muốn làm oops, chúng tôi đã có một số dấu ngoặc tất cả các funky trên chúng ta. 545 00:38:12,000 --> 00:38:15,000 Chúng tôi sẽ sửa chữa những niềng răng. 546 00:38:15,000 --> 00:38:19,000 Hiện chúng tôi đi. 547 00:38:19,000 --> 00:38:22,000 Và vì vậy chúng tôi làm những gì muốn làm, theo thuật toán của chúng tôi, 548 00:38:22,000 --> 00:38:27,000 nếu chúng ta không tìm thấy kim? 549 00:38:27,000 --> 00:38:32,000 Nói rằng trong trường hợp cho kim là ít hơn so với những gì chúng tôi đang tìm kiếm. Kevin. 550 00:38:32,000 --> 00:38:34,000 Chỉ nhìn vào nửa bên trái. 551 00:38:34,000 --> 00:38:40,000 Đúng, vì vậy chúng tôi sẽ đặt một bình luận ở đây nói rằng "hãy nhìn vào nửa bên trái". 552 00:38:40,000 --> 00:38:46,000 Và nếu kim lớn hơn haystack tại trung điểm, chúng tôi những gì bạn muốn làm gì? 553 00:38:46,000 --> 00:38:48,000 [Sinh viên] Sau đó bạn nhìn vào nửa bên phải. 554 00:38:48,000 --> 00:38:53,000 Nhìn vào nửa bên phải, nhìn vào đúng một nửa. " 555 00:38:53,000 --> 00:38:58,000 Không quá tồi tàn. 556 00:38:58,000 --> 00:39:05,000 Được rồi, vì vậy tại thời điểm này, mọi thứ đang tìm kiếm khá tốt. 557 00:39:05,000 --> 00:39:13,000 Các vấn đề với mã như bằng văn bản là gì? 558 00:39:13,000 --> 00:39:15,000 [Sinh viên] Bạn không có thiết bị đầu cuối cho nửa. 559 00:39:15,000 --> 00:39:18,000 Phải, chúng tôi không có thiết bị đầu cuối cho nửa. 560 00:39:18,000 --> 00:39:20,000 Chúng tôi cũng chỉ sẽ phải đi qua điều này một lần. 561 00:39:20,000 --> 00:39:23,000 Chúng tôi sẽ chỉ nhìn tại một trung điểm. 562 00:39:23,000 --> 00:39:27,000 Một trong hai yếu tố là có, hoặc nó không phải. 563 00:39:27,000 --> 00:39:34,000 Để hoàn thành điều này, chúng tôi sẽ cần phải làm một số loại của sự lặp lại. 564 00:39:34,000 --> 00:39:39,000 Chúng tôi cần phải tiếp tục lặp đi lặp lại cho đến khi chúng tôi tìm thấy rằng 565 00:39:39,000 --> 00:39:43,000 một trong hai yếu tố là ở đó bởi vì chúng tôi đã thu hẹp xuống và cuối cùng đã tìm thấy nó, 566 00:39:43,000 --> 00:39:46,000 hoặc nó không ở trong đó bởi vì chúng tôi đã xem xét thông qua tất cả những điều 567 00:39:46,000 --> 00:39:52,000 trong nửa thích hợp của mảng và thấy rằng không có gì là ở đó. 568 00:39:52,000 --> 00:39:56,000 >> Bất cứ khi nào chúng tôi đã nhận sự lặp lại xảy ra, chúng tôi sẽ sử dụng những gì? 569 00:39:56,000 --> 00:39:58,000 [Sinh Viên] Một vòng lặp. 570 00:39:58,000 --> 00:40:00,000 Một số loại vòng lặp. Vâng. 571 00:40:00,000 --> 00:40:03,000 [Sinh viên] Chúng ta có thể làm một vòng lặp do-trong khi và có nó làm điều đó và sau đó trong khi 572 00:40:03,000 --> 00:40:10,000 kim, không có gì không bằng tôi không chắc chắn nơi tôi đã đi với điều đó. 573 00:40:10,000 --> 00:40:18,000 Tuy nhiên, loại giống như làm điều đó miễn là nó không bằng giá trị mà người dùng nhập vào. 574 00:40:18,000 --> 00:40:21,000 Yeah, vì vậy chúng ta hãy xem, cách này có thể viết riêng của mình? 575 00:40:21,000 --> 00:40:23,000 Bạn hãy sử dụng một vòng lặp do-trong khi. 576 00:40:23,000 --> 00:40:26,000 Trường hợp không làm bắt đầu? 577 00:40:26,000 --> 00:40:33,000 [Sinh viên] Ngay sau khi kích thước / 2. 578 00:40:33,000 --> 00:40:42,000 [Nate] Được rồi, và chúng tôi sẽ làm gì? 579 00:40:42,000 --> 00:40:44,000 Chúng tôi sẽ điền vào trong khi sau đó. 580 00:40:44,000 --> 00:40:46,000 Chúng tôi sẽ làm gì? 581 00:40:46,000 --> 00:40:49,000 [Sinh viên không phải chúng tôi muốn làm tất cả những thứ chúng tôi có trong phần nếu 582 00:40:49,000 --> 00:40:52,000 [Nate] tất cả các công cụ này, tuyệt vời. 583 00:40:52,000 --> 00:40:55,000 Sao chép và dán. 584 00:40:55,000 --> 00:40:59,000 Ồ, người đàn ông. 585 00:40:59,000 --> 00:41:03,000 Hãy xem, nếu công trình này, nếu chúng ta có thể tab này hơn. 586 00:41:03,000 --> 00:41:08,000 Beautiful. 587 00:41:08,000 --> 00:41:16,000 Được rồi, và chúng tôi tiết kiệm này, do đó bạn có nó. 588 00:41:16,000 --> 00:41:21,000 Được rồi, và chúng tôi sẽ để làm điều này trong khi 589 00:41:21,000 --> 00:41:25,000 điều kiện trong khi bạn đang theo đuổi là gì? 590 00:41:25,000 --> 00:41:31,000 [Sinh viên] Trong khi kim không bằng, do đó, như dấu chấm than. 591 00:41:31,000 --> 00:41:37,000 Nhưng tôi không chắc chắn chính xác những gì mà chưa. 592 00:41:37,000 --> 00:41:39,000 [Nate] Yeah, đây là một cách để làm điều đó. 593 00:41:39,000 --> 00:41:41,000 Sam, để bạn có một bình luận? 594 00:41:41,000 --> 00:41:43,000 [Sam] Tôi nhớ khi tôi nhìn vào các đoạn video, 595 00:41:43,000 --> 00:41:48,000 Tôi lấy một ảnh chụp màn hình của một của giống như khi chúng ta đã làm giả cho nó, 596 00:41:48,000 --> 00:41:52,000 đã có một số mối quan hệ giữa max và min. 597 00:41:52,000 --> 00:41:58,000 Tôi nghĩ đó là một cái gì đó như thế nếu tối đa là bao giờ ít hơn min. 598 00:41:58,000 --> 00:42:00,000 Đã nhận nó. 599 00:42:00,000 --> 00:42:04,000 [Sam] Hoặc như nếu tối đa là không ít hơn phút hoặc một cái gì đó như thế, 600 00:42:04,000 --> 00:42:06,000 bởi vì điều đó có nghĩa là bạn đã tìm kiếm tất cả mọi thứ. 601 00:42:06,000 --> 00:42:13,000 >> Yeah, vì vậy những gì âm thanh như max và min đang đề cập đến? 602 00:42:13,000 --> 00:42:16,000 [Sam] Giá trị mà số nguyên sẽ thay đổi 603 00:42:16,000 --> 00:42:18,000 liên quan đến nơi mà chúng tôi đặt tại điểm giữa. 604 00:42:18,000 --> 00:42:20,000 Chính xác. 605 00:42:20,000 --> 00:42:24,000 [Sam] Vào thời điểm đó, nó đi [không nghe được tính max và min. 606 00:42:24,000 --> 00:42:29,000 Trung điểm là ý tưởng này max và min. 607 00:42:29,000 --> 00:42:35,000 Đó có ý nghĩa nhằm giúp mọi người? 608 00:42:35,000 --> 00:42:39,000 Nếu chúng ta bắt đầu tìm kiếm như thế nào chúng tôi sẽ làm điều này lặp đi lặp lại, 609 00:42:39,000 --> 00:42:43,000 bạn hoàn toàn đúng mà chúng ta muốn sử dụng một số loại làm trong khi vòng lặp. 610 00:42:43,000 --> 00:42:49,000 Nhưng tôi nghĩ nếu chúng ta nhớ những gì đang xảy ra tại vị trí của mảng này 611 00:42:49,000 --> 00:42:53,000 và những gì đang thực sự xảy ra - Tôi sẽ viết ở đây 612 00:42:53,000 --> 00:42:58,000 tại lặp đi lặp lại đầu tiên của tìm kiếm nhị phân, chúng tôi có 613 00:42:58,000 --> 00:43:05,000 Tôi sẽ sử dụng b và e để biểu thị sự bắt đầu. 614 00:43:05,000 --> 00:43:10,000 Và sau đó là kết thúc của mảng của chúng tôi. 615 00:43:10,000 --> 00:43:14,000 Chúng tôi biết rằng bắt đầu từ lúc 4 quyền ở đây, 616 00:43:14,000 --> 00:43:18,000 và chúng ta biết rằng cuối cùng là 108. 617 00:43:18,000 --> 00:43:23,000 Nói rằng chúng tôi đang tìm kiếm cho số 15. 618 00:43:23,000 --> 00:43:27,000 Lần đầu tiên chúng tôi làm điều này, như chúng ta đã thấy, 619 00:43:27,000 --> 00:43:30,000 trung điểm là hoặc sẽ là 16 hoặc 23 620 00:43:30,000 --> 00:43:34,000 tùy thuộc vào cách chúng tôi tính toán những điều trên. 621 00:43:34,000 --> 00:43:37,000 Kể từ khi đồng đều chia ở giữa sẽ cung cấp cho chúng tôi không gian này 622 00:43:37,000 --> 00:43:42,000 giữa 16 và 23, chúng ta có thể không đồng đều chia 623 00:43:42,000 --> 00:43:47,000 hoặc chia và nhận được tại một trung điểm thật sự. 624 00:43:47,000 --> 00:43:49,000 Chúng tôi sẽ xem xét ở mức 16. 625 00:43:49,000 --> 00:43:55,000 Chúng tôi sẽ nhận ra "Hey, 16> 15 mà chúng tôi đang tìm kiếm." 626 00:43:55,000 --> 00:43:59,000 Để sau đó nhìn vào nửa bên trái của mảng 627 00:43:59,000 --> 00:44:03,000 những gì chúng ta sẽ kết thúc làm là loại bỏ 628 00:44:03,000 --> 00:44:07,000 toàn bộ trên phần này 629 00:44:07,000 --> 00:44:16,000 và nói: "Được rồi, bây giờ thiết bị đầu cuối của chúng tôi sẽ được ở đây." 630 00:44:16,000 --> 00:44:22,000 Phiên bản kế tiếp của vòng lặp của chúng tôi, chúng tôi bây giờ nhìn vào mảng này, 631 00:44:22,000 --> 00:44:25,000 hiệu quả đã bị loại bỏ phần này bởi vì bây giờ 632 00:44:25,000 --> 00:44:30,000 nếu chúng ta lấy trung điểm là sự khác biệt giữa đầu và kết thúc, 633 00:44:30,000 --> 00:44:34,000 chúng ta thấy trung điểm của chúng tôi là 8, 634 00:44:34,000 --> 00:44:40,000 mà sau đó chúng tôi có thể kiểm tra 8 để xem nơi nó liên quan đến số lượng chúng tôi đang tìm kiếm, 635 00:44:40,000 --> 00:44:44,000 15, tìm thấy rằng 15 là lớn hơn, 636 00:44:44,000 --> 00:44:49,000 vì vậy chúng ta phải di chuyển đến phần bên phải của danh sách, 637 00:44:49,000 --> 00:44:51,000 mà chúng ta biết vì chúng ta là con người, và chúng ta có thể nhìn thấy nó. 638 00:44:51,000 --> 00:44:54,000 Chúng ta biết rằng phần bên phải sẽ là nơi chúng tôi tìm thấy nó, 639 00:44:54,000 --> 00:45:01,000 nhưng máy tính không biết điều đó, vì vậy những gì chúng tôi sẽ làm là chúng tôi sẽ thực sự 640 00:45:01,000 --> 00:45:04,000 có này đi lên, và bây giờ bắt đầu và kết thúc 641 00:45:04,000 --> 00:45:11,000 cùng một chỗ, để trở thành trung điểm số duy nhất trong danh sách tại thời điểm đó, 642 00:45:11,000 --> 00:45:16,000 mà là 15, và chúng tôi đã tìm thấy nó. 643 00:45:16,000 --> 00:45:21,000 Điều đó sáng tỏ một số nơi này tối đa toàn bộ và ký hiệu min sẽ, 644 00:45:21,000 --> 00:45:24,000 theo dõi của các thiết bị đầu cuối của mảng để tìm ra 645 00:45:24,000 --> 00:45:35,000 làm thế nào để thu hẹp xuống? 646 00:45:35,000 --> 00:45:42,000 >> Điều gì sẽ xảy ra nếu điều này là không bằng 15? 647 00:45:42,000 --> 00:45:52,000 Nếu chúng ta đang tìm kiếm 15 và thay vào đó, con số này cũng là 16? 648 00:45:52,000 --> 00:45:54,000 Chúng tôi muốn nói, "Ồ, nó lớn. 649 00:45:54,000 --> 00:45:57,000 Chúng tôi muốn quay trở lại bên trái ". 650 00:45:57,000 --> 00:46:01,000 Và chúng ta sẽ di chuyển điện tử của chúng tôi sang bên phải, 651 00:46:01,000 --> 00:46:06,000 điểm mà tại đó chúng ta có một thiết bị đầu cuối mà có thể xung đột. 652 00:46:06,000 --> 00:46:09,000 Nó sẽ không thể tìm kiếm cho các yếu tố nữa 653 00:46:09,000 --> 00:46:13,000 bởi vì bây giờ chúng tôi có thiết bị đầu cuối của chúng tôi và điểm bắt đầu của chúng tôi, 654 00:46:13,000 --> 00:46:16,000 max và min của chúng tôi của chúng tôi, hiện nay lộn. 655 00:46:16,000 --> 00:46:23,000 Chúng tôi tìm kiếm thông qua toàn bộ mảng. Chúng ta không thể tìm thấy bất cứ điều gì. 656 00:46:23,000 --> 00:46:27,000 Đó là điểm mà tại đó, chúng tôi muốn nói, "Được rồi, chúng ta sẽ dừng thuật toán này. 657 00:46:27,000 --> 00:46:34,000 Chúng tôi không tìm thấy bất cứ điều gì. Chúng tôi biết nó không phải ở đây. " 658 00:46:34,000 --> 00:46:36,000 Làm thế nào là se đi đâu? 659 00:46:36,000 --> 00:46:40,000 [Sinh viên] Làm thế nào chính xác là máy tính chuyển đổi cuối cùng? 660 00:46:40,000 --> 00:46:45,000 Làm thế nào để cuối cùng kết thúc trước khi bắt đầu? 661 00:46:45,000 --> 00:46:48,000 Cuối cùng kết thúc trước khi bắt đầu 662 00:46:48,000 --> 00:46:54,000 vì môn toán mà chúng ta sẽ làm mỗi khi chúng ta làm điều này. 663 00:46:54,000 --> 00:47:00,000 Cách chúng ta trao đổi là nếu bạn nhìn vào lần đầu tiên chúng tôi làm điều này trao đổi 664 00:47:00,000 --> 00:47:03,000 nơi mà chúng tôi có sự khởi đầu tại 4 và kết thúc 665 00:47:03,000 --> 00:47:13,000 tất cả các con đường xuống tại 108 và trung điểm của chúng tôi, nói rằng, ở tuổi 16 - 666 00:47:13,000 --> 00:47:20,000 Tôi sẽ thiết lập lại điều này trở lại 15-nếu chúng ta đang tìm kiếm cho 15, 667 00:47:20,000 --> 00:47:25,000 chúng tôi biết rằng những gì chúng ta đã làm khi chúng tôi kiểm tra số 16 và thấy rằng nó là lớn hơn 668 00:47:25,000 --> 00:47:28,000 và muốn loại bỏ toàn bộ phần bên phải của danh sách, 669 00:47:28,000 --> 00:47:36,000 chúng ta đã thấy rằng những gì chúng tôi muốn làm di chuyển điện tử này ngay tại đây. 670 00:47:36,000 --> 00:47:44,000 Hiệu quả, e đã chuyển một trước khi trung điểm. 671 00:47:44,000 --> 00:47:48,000 Tương tự như vậy, khi chúng tôi đã làm điều này lặp đi lặp lại của thuật toán 672 00:47:48,000 --> 00:47:51,000 và trung điểm lên 8, 673 00:47:51,000 --> 00:47:55,000 chúng tôi thấy rằng 8 <15, vì vậy chúng tôi muốn di chuyển b 674 00:47:55,000 --> 00:48:00,000 1 qua trung điểm. 675 00:48:00,000 --> 00:48:07,000 Bây giờ, bắt đầu và kết thúc là cả hai cùng nhau này 15. 676 00:48:07,000 --> 00:48:10,000 >> Nếu chúng ta đã xảy ra để tìm kiếm một số giá trị khác, chứ không phải 15, 677 00:48:10,000 --> 00:48:14,000 hoặc nếu 15 này đã thay vào đó là một 16, 678 00:48:14,000 --> 00:48:20,000 chúng ta sẽ thấy rằng điện tử, chúng tôi muốn di chuyển một trước khi trung điểm. 679 00:48:20,000 --> 00:48:33,000 Bây giờ e sẽ ở đó lộn ít hơn b. 680 00:48:33,000 --> 00:48:39,000 Hãy đi bộ thông qua làm thế nào chúng ta thực sự kết thúc mã hóa thuật toán này. 681 00:48:39,000 --> 00:48:44,000 Chúng ta biết rằng chúng ta muốn có tính toán này trung điểm. 682 00:48:44,000 --> 00:48:48,000 Chúng ta cũng biết rằng chúng ta muốn theo dõi các đầu và cuối của mảng 683 00:48:48,000 --> 00:48:51,000 của mảng hiện tại của chúng tôi vì vậy chúng tôi có thể tìm ra 684 00:48:51,000 --> 00:48:56,000 nửa bên trái của danh sách này và nửa bên phải của danh sách là. 685 00:48:56,000 --> 00:49:03,000 Chúng tôi làm điều đó với một trong hai bắt đầu và kết thúc, 686 00:49:03,000 --> 00:49:07,000 hoặc chúng ta có thể gọi họ là min và max. 687 00:49:07,000 --> 00:49:10,000 Tôi sẽ sử dụng bắt đầu và kết thúc thời gian này. 688 00:49:10,000 --> 00:49:15,000 Khi chúng ta bắt đầu, nếu chúng ta nhìn lại ví dụ của chúng ta ở đây, 689 00:49:15,000 --> 00:49:20,000 đầu của chúng tôi đã được thiết lập để bắt đầu của mảng, tự nhiên. 690 00:49:20,000 --> 00:49:25,000 Những gì chỉ số này? Những gì chúng ta nên bắt đầu được? 691 00:49:25,000 --> 00:49:27,000 Daniel. 692 00:49:27,000 --> 00:49:30,000 [Daniel] Haystack [0]. 693 00:49:30,000 --> 00:49:37,000 [Nate] Yeah, vì vậy chúng tôi có thể thiết lập nó bằng haystack [0]. 694 00:49:37,000 --> 00:49:40,000 , Tuy nhiên, vấn đề là điều này cho chúng ta không phải là vị trí của các yếu tố đầu tiên. 695 00:49:40,000 --> 00:49:45,000 Nó cho chúng ta các chỉ số của phần tử đầu tiên hoặc giá trị thực tế rằng vị trí đầu tiên. 696 00:49:45,000 --> 00:49:47,000 [Sinh viên] sẽ chuyển đổi tới 0,20? 697 00:49:47,000 --> 00:49:52,000 [Nate] Điều gì sẽ làm được-tốt, nó sẽ không làm bất kỳ chuyển đổi nhanh. 698 00:49:52,000 --> 00:49:56,000 Những gì nó sẽ làm là nó sẽ lưu trữ một 4 trong bắt đầu, 699 00:49:56,000 --> 00:49:59,000 và sau đó nó sẽ được khó khăn để so sánh chống lại bắt đầu 700 00:49:59,000 --> 00:50:03,000 bởi vì bắt đầu sẽ được giữ giá trị là 4, 701 00:50:03,000 --> 00:50:06,000 đó là sự khởi đầu của mảng của chúng tôi, 702 00:50:06,000 --> 00:50:08,000 nhưng chúng tôi muốn theo dõi các chỉ số trong mảng 703 00:50:08,000 --> 00:50:11,000 như trái ngược với các giá trị. 704 00:50:11,000 --> 00:50:17,000 Chúng tôi thực sự sẽ sử dụng một 0, như thế. 705 00:50:17,000 --> 00:50:20,000 Để kết thúc của mảng-Charlotte đưa lên sớm hơn một chút. 706 00:50:20,000 --> 00:50:23,000 Đây là nơi mà chúng tôi sẽ đưa vào tài khoản các chỉ mục không. 707 00:50:23,000 --> 00:50:25,000 >> Charlotte, cuối mảng là những gì? 708 00:50:25,000 --> 00:50:28,000 Chỉ số cuối cùng là gì? 709 00:50:28,000 --> 00:50:30,000 [Charlotte] Size - 1. 710 00:50:30,000 --> 00:50:32,000 Yeah, và có kích thước chúng tôi nên sử dụng? 711 00:50:32,000 --> 00:50:35,000 Chúng ta có nên sử dụng kích thước vốn hoặc kích cỡ chữ thường? 712 00:50:35,000 --> 00:50:37,000 Vốn kích thước. 713 00:50:37,000 --> 00:50:42,000 Trong trường hợp này, chúng ta có thể sử dụng kích thước vốn. 714 00:50:42,000 --> 00:50:45,000 Nếu chúng ta muốn chức năng này để được cầm tay 715 00:50:45,000 --> 00:50:48,000 và sử dụng chức năng này trong các chương trình khác, 716 00:50:48,000 --> 00:50:50,000 chúng tôi thực sự có thể sử dụng kích thước chữ thường. 717 00:50:50,000 --> 00:50:52,000 Thật là tốt quá. 718 00:50:52,000 --> 00:51:01,000 Nhưng Charlotte là hoàn toàn đúng mà chúng ta muốn có kích thước - 1. 719 00:51:01,000 --> 00:51:03,000 Tại điểm 720 00:51:03,000 --> 00:51:05,000 [Sinh viên] Làm thế nào mà bạn có thể sử dụng kích thước chữ hoa? 721 00:51:05,000 --> 00:51:07,000 Làm thế nào mà chúng ta có thể sử dụng kích thước chữ hoa? 722 00:51:07,000 --> 00:51:13,000 Nó chỉ ra rằng những # định nghĩa thực sự, 723 00:51:13,000 --> 00:51:19,000 dưới mui xe, một văn bản như tìm kiếm và thay thế, nếu có ý nghĩa. 724 00:51:19,000 --> 00:51:24,000 Khi bạn biên dịch mã của bạn, giai đoạn tiền xử lý 725 00:51:24,000 --> 00:51:27,000 của trình biên dịch đi qua các tập tin, 726 00:51:27,000 --> 00:51:31,000 và có vẻ ở khắp mọi nơi mà bạn đã viết quy mô vốn, 727 00:51:31,000 --> 00:51:39,000 và nó thay thế văn bản đó theo nghĩa đen với một 8, chỉ như thế. 728 00:51:39,000 --> 00:51:42,000 Trong ý nghĩa đó, điều này là rất khác nhau từ một biến. 729 00:51:42,000 --> 00:51:45,000 Nó không mất bất kỳ không gian trong bộ nhớ. 730 00:51:45,000 --> 00:51:52,000 Đó là một thủ thuật thay thế văn bản đơn giản. 731 00:51:52,000 --> 00:51:57,000 Trong trường hợp này, chúng ta sẽ sử dụng kích thước. 732 00:51:57,000 --> 00:52:01,000 Từ đây, chúng tôi muốn làm một số loại của sự lặp lại, 733 00:52:01,000 --> 00:52:03,000 và chúng tôi đang đi đúng hướng với vòng lặp do-trong khi của chúng tôi. 734 00:52:03,000 --> 00:52:08,000 Chúng tôi muốn làm một cái gì đó cho đến khi một điều kiện không giữ nữa, 735 00:52:08,000 --> 00:52:12,000 và như chúng ta đã thấy ở trên, chúng tôi thấy rằng tình trạng 736 00:52:12,000 --> 00:52:19,000 thật sự mà chúng ta không muốn kết thúc 737 00:52:19,000 --> 00:52:24,000 là ít hơn so với bắt đầu. 738 00:52:24,000 --> 00:52:26,000 >> Đây là điều kiện của chúng tôi dừng lại. 739 00:52:26,000 --> 00:52:35,000 Nếu điều này xảy ra, chúng tôi muốn dừng lại và tuyên bố như thế, "Này, chúng tôi đã không tìm thấy bất cứ điều gì." 740 00:52:35,000 --> 00:52:43,000 Để thể hiện điều này, chúng tôi muốn sử dụng một số loại vòng. 741 00:52:43,000 --> 00:52:49,000 Trong trường hợp này, nó sẽ là một vòng lặp do-while, vòng lặp for, vòng lặp trong khi? 742 00:52:49,000 --> 00:52:51,000 Chúng tôi có một vòng lặp do-trong khi ở đây. 743 00:52:51,000 --> 00:52:53,000 Bạn có những người như cách tiếp cận đó? 744 00:52:53,000 --> 00:52:59,000 Bạn có nghĩ rằng chúng ta nên cố gắng một cách tiếp cận khác nhau? 745 00:52:59,000 --> 00:53:01,000 Kevin, bất kỳ suy nghĩ? 746 00:53:01,000 --> 00:53:06,000 Chúng ta có thể có một vòng lặp trong khi vì chúng ta biết tối đa 747 00:53:06,000 --> 00:53:11,000 sẽ lớn hơn min anyways bắt đầu. 748 00:53:11,000 --> 00:53:14,000 Yeah, vì vậy không có khởi tạo cần phải xảy ra. 749 00:53:14,000 --> 00:53:17,000 Những vòng lặp do-while là tuyệt vời khi bạn phải khởi tạo một cái gì đó 750 00:53:17,000 --> 00:53:21,000 trước khi sau đó kiểm tra, trong khi đó đây 751 00:53:21,000 --> 00:53:26,000 chúng ta biết rằng chúng tôi sẽ không để giữ reinitializing cả hai bắt đầu và kết thúc 752 00:53:26,000 --> 00:53:28,000 mỗi vòng của vòng lặp. 753 00:53:28,000 --> 00:53:32,000 Chúng ta biết rằng chúng ta muốn khởi tạo cho họ, sau đó kiểm tra điều kiện của chúng tôi. 754 00:53:32,000 --> 00:53:38,000 Trong trường hợp này, tôi thực sự sẽ đi với một vòng lặp trong khi đơn giản. 755 00:53:38,000 --> 00:53:44,000 Nó chỉ ra rằng vòng lặp do-while được sử dụng khá thường xuyên. 756 00:53:44,000 --> 00:53:49,000 Rất nhiều nơi thậm chí không dạy làm trong khi các vòng. 757 00:53:49,000 --> 00:53:53,000 Họ đang tốt để xử lý đầu vào của người dùng, vì vậy chúng tôi đã nhìn thấy rất nhiều người trong số họ cho đến nay. 758 00:53:53,000 --> 00:53:59,000 Nhưng bình thường, trong khi vòng lặp là rất phổ biến hơn. 759 00:53:59,000 --> 00:54:03,000 Nó chỉ ra rằng tình trạng này là bằng văn bản 760 00:54:03,000 --> 00:54:09,000 sẽ không thực sự làm cho chúng tôi nhiều tốt, và tại sao vậy? 761 00:54:09,000 --> 00:54:11,000 Tôi xin lỗi, tôi không biết tên của bạn. 762 00:54:11,000 --> 00:54:13,000 Tôi Jerry. >> Xin lỗi? 763 00:54:13,000 --> 00:54:15,000 Đó là B-O-R-U-I. 764 00:54:15,000 --> 00:54:18,000 Oh, okay. 765 00:54:18,000 --> 00:54:23,000 Tôi không nhìn thấy bạn trên danh sách của tôi. 766 00:54:23,000 --> 00:54:26,000 Oh, đó là bởi vì-oh, có ý nghĩa. 767 00:54:26,000 --> 00:54:31,000 Bạn có một ý tưởng về lý do tại sao điều này vòng lặp trong khi không có thể làm việc như dự định, 768 00:54:31,000 --> 00:54:38,000 như bằng văn bản với điều kiện? 769 00:54:38,000 --> 00:54:43,000 [Jerry] Bạn có nghĩa là như bạn muốn tất cả những thứ sau khi nó vào? 770 00:54:43,000 --> 00:54:46,000 Yeah, vì vậy đó là một. 771 00:54:46,000 --> 00:54:49,000 Chúng tôi có thể phải đặt tất cả các công cụ này vào vòng lặp trong khi, đó là hoàn toàn đúng sự thật. 772 00:54:49,000 --> 00:54:55,000 Một thứ khác mà là nhiều hơn một chút vấn đề, tuy nhiên, là điều kiện này không làm việc. 773 00:54:55,000 --> 00:54:57,000 [Sinh viên] Bạn cần phải lật nó. 774 00:54:57,000 --> 00:55:04,000 Đúng, vì vậy điều kiện này sẽ không bao giờ là sự thật ban đầu là cách chúng ta nói chuyện về nó. 775 00:55:04,000 --> 00:55:08,000 Chúng tôi muốn làm điều gì đó cho đến khi kết thúc 00:55:13,000 nhưng chúng tôi muốn làm một cái gì đó trong khi 777 00:55:13,000 --> 00:55:21,000 bắt đầu ≤ cuối. 778 00:55:21,000 --> 00:55:24,000 >> Có đảo ngược đó của logic. 779 00:55:24,000 --> 00:55:27,000 Tôi tội lỗi làm cho những sai lầm tất cả các thời gian. 780 00:55:27,000 --> 00:55:31,000 [Sinh viên] Tại sao nó có được ít hơn hoặc bằng? 781 00:55:31,000 --> 00:55:33,000 Bởi vì bạn có nhớ là trường hợp mà chúng tôi đã đến 782 00:55:33,000 --> 00:55:36,000 nơi mà chỉ có một phần tử, và chúng tôi đã giảm, 783 00:55:36,000 --> 00:55:43,000 và chúng tôi đang tìm kiếm tại chỉ là 15 trong mảng của chúng tôi? 784 00:55:43,000 --> 00:55:47,000 Của chúng tôi và bắt đầu và kết thúc của chúng tôi là cùng một nguyên tố. 785 00:55:47,000 --> 00:55:50,000 Chúng tôi muốn đảm bảo rằng chúng tôi xử lý trường hợp. 786 00:55:50,000 --> 00:55:54,000 Nếu chúng ta làm một thẳng ít hơn, 787 00:55:54,000 --> 00:55:58,000 chúng tôi sẽ chỉ có thể để có được một mảng 2-yếu tố. 788 00:55:58,000 --> 00:56:06,000 Một khi chúng ta đã xuống đến yếu tố cuối cùng đó, nếu như đó là yếu tố của chúng tôi, chúng tôi sẽ không bao giờ tìm thấy nó. 789 00:56:06,000 --> 00:56:10,000 Bây giờ đây, chúng ta có thể làm chính xác như bạn đã nói. 790 00:56:10,000 --> 00:56:15,000 Chúng ta có thể bắt đầu nhúng cả các công cụ vào giữa của vòng lặp trong khi của chúng tôi. 791 00:56:15,000 --> 00:56:20,000 Chúng tôi có thể tiếng tom trong điểm giữa của chúng tôi. 792 00:56:20,000 --> 00:56:24,000 Chúng tôi có thể mất tất cả các nếu báo cáo, 793 00:56:24,000 --> 00:56:30,000 kéo họ ra khỏi vòng lặp do-trong khi, 794 00:56:30,000 --> 00:56:34,000 tiếng tom chúng vào, 795 00:56:34,000 --> 00:56:39,000 làm sạch những thứ lên một chút, 796 00:56:39,000 --> 00:56:48,000 và tôi sẽ đi trước và lưu sửa đổi này. 797 00:56:48,000 --> 00:56:53,000 Và tại thời điểm này, chúng tôi đang nhận được khá gần. 798 00:56:53,000 --> 00:56:55,000 Sam. 799 00:56:55,000 --> 00:56:58,000 Tôi nghĩ bạn cũng cần phải có int trung điểm = kích thước 1/2. 800 00:56:58,000 --> 00:57:01,000 Đã nhận nó, kích thước 1/2. 801 00:57:01,000 --> 00:57:05,000 Có bất cứ điều gì khác chúng ta cần phải thay đổi về dòng đó? 802 00:57:05,000 --> 00:57:10,000 Đó là một nắm bắt tốt. 803 00:57:10,000 --> 00:57:14,000 >> Kích thước làm gì? Chúng tôi bao giờ thay đổi kích thước? 804 00:57:14,000 --> 00:57:17,000 Để giữ dòng như thế này, chúng ta phải thay đổi kích thước. 805 00:57:17,000 --> 00:57:21,000 Chúng ta phải thay đổi kích thước mỗi lần chúng tôi đi xung quanh cho vòng lặp. 806 00:57:21,000 --> 00:57:25,000 Nhưng hãy nhớ rằng khi chúng tôi đi qua ví dụ của chúng ta chỉ là một chút trước đó, 807 00:57:25,000 --> 00:57:30,000 và chúng tôi đã bắt đầu từ 4 808 00:57:30,000 --> 00:57:33,000 và kết thúc tất cả các cách trên 108? 809 00:57:33,000 --> 00:57:35,000 Làm thế nào chúng tôi tính toán trung điểm? 810 00:57:35,000 --> 00:57:38,000 Chúng ta sử dụng kích thước? 811 00:57:38,000 --> 00:57:40,000 Hay chúng ta đang sử dụng bắt đầu và kết thúc thay vì? 812 00:57:40,000 --> 00:57:42,000 Đó là sự khác biệt giữa kết thúc và bắt đầu. 813 00:57:42,000 --> 00:57:50,000 Chính xác, và làm thế nào chính xác tôi nên viết rằng, Charlotte? 814 00:57:50,000 --> 00:57:52,000 Chỉ kết thúc - bắt đầu. 815 00:57:52,000 --> 00:57:55,000 Bạn sẽ không cần phải làm gì - 1 816 00:57:55,000 --> 00:57:58,000 bởi vì - 1 đã được bao gồm trong các kết thúc và bắt đầu đã. 817 00:57:58,000 --> 00:58:00,000 [Nate] Great, bạn hoàn toàn đúng. 818 00:58:00,000 --> 00:58:03,000 Chúng tôi không có làm - 1 - 1 đã được bao gồm 819 00:58:03,000 --> 00:58:08,000 và hạch toán vì khi chúng ta khởi tạo biến kết thúc. 820 00:58:08,000 --> 00:58:11,000 >> Có bất cứ điều gì khác tôi cần phải làm cú pháp để có dòng này có ý nghĩa? 821 00:58:11,000 --> 00:58:13,000 [Sinh viên] Thêm bắt đầu >> Plus. Bắt đầu? 822 00:58:13,000 --> 00:58:15,000 [Sinh viên] Khi kết thúc. 823 00:58:15,000 --> 00:58:20,000 Bởi vì nó chỉ được tính toán một nửa chiều dài. 824 00:58:20,000 --> 00:58:26,000 Bạn cần phải thêm bắt đầu. 825 00:58:26,000 --> 00:58:31,000 [Nate] Điều này sẽ tính toán cho chúng ta? 826 00:58:31,000 --> 00:58:35,000 Nếu chúng ta nghĩ về kết thúc vào ngày này lặp đi lặp lại đầu tiên của vòng lặp, 827 00:58:35,000 --> 00:58:40,000 cuối cùng là có được trong 7 chỉ số vị trí. 828 00:58:40,000 --> 00:58:43,000 Bắt đầu là ở vị trí 0. 829 00:58:43,000 --> 00:58:47,000 Hãy nhớ rằng, chúng tôi đang tìm kiếm cho một trong hai 830 00:58:47,000 --> 00:58:52,000 vị trí 3 hoặc vị trí thứ 4. 831 00:58:52,000 --> 00:58:56,000 Nếu chúng ta nhìn vào toán học này, chỉ để làm cho nó một ít hữu hình hơn, 832 00:58:56,000 --> 00:59:02,000 đặt một số số ở đây, chúng tôi có 7, 0, 833 00:59:02,000 --> 00:59:10,000 vì vậy 7 - 0, và sau đó / 2 834 00:59:10,000 --> 00:59:19,000 là 3 trong phân chia số nguyên, đó là. 835 00:59:19,000 --> 00:59:26,000 Sau đó, chúng ta cần phải sau đó thêm lại bắt đầu của chúng tôi? 836 00:59:26,000 --> 00:59:28,000 Chúng tôi làm không phải trong trường hợp này. 837 00:59:28,000 --> 00:59:31,000 Trên lặp đầu tiên, nó sẽ được sử dụng tốt bởi vì bắt đầu là 0. 838 00:59:31,000 --> 00:59:36,000 Nhưng như chúng ta tiến bộ, chúng tôi thực sự tất cả chỉ cần 839 00:59:36,000 --> 00:59:42,000 cuối cùng bắt đầu / 2. 840 00:59:42,000 --> 00:59:46,000 Có một trick ở đây, và đó là là một ưu tiên. 841 00:59:46,000 --> 00:59:49,000 [Sinh viên] Chúng ta có cần dấu ngoặc đơn? 842 00:59:49,000 --> 00:59:53,000 [Nate] Chính xác, đó là bởi vì nếu chúng ta không đặt các dấu ngoặc đơn, 843 00:59:53,000 --> 00:59:58,000 sau đó dòng này sẽ được giải thích thay vì 844 00:59:58,000 --> 01:00:09,000 (kết thúc) - (bắt đầu / 2), mà chúng tôi chắc chắn không muốn. 845 01:00:09,000 --> 01:00:11,000 Xem ra cho những quy tắc ưu tiên. 846 01:00:11,000 --> 01:00:15,000 [Sinh viên] Tại sao không phải là nó kết thúc + bắt đầu? 847 01:00:15,000 --> 01:00:17,000 Tại sao không phải là nó kết thúc + bắt đầu? 848 01:00:17,000 --> 01:00:19,000 [Sinh viên] Tại sao nó không đó? 849 01:00:19,000 --> 01:00:24,000 Tại sao nó sẽ là +? 850 01:00:24,000 --> 01:00:26,000 Tôi nghĩ rằng bạn đã đúng. 851 01:00:26,000 --> 01:00:28,000 [Sinh viên] Bởi vì đó là trung bình? 852 01:00:28,000 --> 01:00:31,000 [Nate] End + bắt đầu, bạn đã hoàn toàn đúng. 853 01:00:31,000 --> 01:00:34,000 Wow, tôi hoàn toàn goofed. Bạn nói đúng. 854 01:00:34,000 --> 01:00:39,000 Nếu chúng tôi đã làm trừ, chúng ta sẽ muốn thêm bắt đầu trở lại. 855 01:00:39,000 --> 01:00:43,000 Trong trường hợp này, bạn rất đúng rằng chúng ta muốn lấy trung bình của hai, 856 01:00:43,000 --> 01:00:45,000 vì vậy chúng tôi muốn thêm chúng, như trái ngược trừ chúng. 857 01:00:45,000 --> 01:00:49,000 [Sinh viên] Nó cũng sẽ làm việc nếu bạn đã kết thúc - bắt đầu / 2 + bắt đầu. 858 01:00:49,000 --> 01:00:55,000 Nó sẽ nếu chúng tôi làm Tôi tin như vậy. 859 01:00:55,000 --> 01:01:00,000 >> Ví dụ, nếu chúng ta đang tìm kiếm bắt đầu, 860 01:01:00,000 --> 01:01:04,000 và chúng tôi đã dời qua đây 861 01:01:04,000 --> 01:01:08,000 với 15. 862 01:01:08,000 --> 01:01:12,000 Bây giờ bắt đầu là ở vị trí 2. 863 01:01:12,000 --> 01:01:15,000 Cuối cùng là ở vị trí 7. 864 01:01:15,000 --> 01:01:21,000 Nếu chúng tôi loại trừ họ, chúng tôi nhận được 5. 865 01:01:21,000 --> 01:01:24,000 Chia cho 2, chúng tôi nhận được 2. 866 01:01:24,000 --> 01:01:27,000 Và sau đó chúng tôi thêm 2 trở lại trong, 867 01:01:27,000 --> 01:01:30,000 và rằng chúng ta có được vị trí thứ 4, 868 01:01:30,000 --> 01:01:33,000 mà là ngay ở đây, mà là trung điểm. 869 01:01:33,000 --> 01:01:36,000 [Sinh viên] chúng tôi cần phải chăm sóc ngắt? 870 01:01:36,000 --> 01:01:39,000 Trong ý thức những gì chúng ta cần phải chăm sóc của gói? 871 01:01:39,000 --> 01:01:43,000 Nếu số tiền hoặc sự khác biệt giữa 872 01:01:43,000 --> 01:01:45,000 tùy thuộc vào cách chúng ta làm điều đó không phải là một số chẵn. 873 01:01:45,000 --> 01:01:49,000 Sau đó, máy tính bị nhầm lẫn cho dù khi đó là 2,5; 874 01:01:49,000 --> 01:01:52,000 để bạn di chuyển sang bên trái hoặc bên phải để xác định là trung điểm? 875 01:01:52,000 --> 01:01:54,000 Đã nhận nó. 876 01:01:54,000 --> 01:01:56,000 Nó chỉ ra rằng với phân chia số nguyên, 877 01:01:56,000 --> 01:01:59,000 chúng ta không bao giờ nhận được những số điểm nổi. 878 01:01:59,000 --> 01:02:01,000 Chúng tôi không bao giờ có được các số thập phân. 879 01:02:01,000 --> 01:02:04,000 Nó hoàn toàn bị loại bỏ. 880 01:02:04,000 --> 01:02:08,000 Nếu bạn có một máy tính phân chia hai biến int, 881 01:02:08,000 --> 01:02:11,000 và một là 7, và khác là 2, 882 01:02:11,000 --> 01:02:13,000 bạn sẽ không nhận được 3,5 kết quả là. 883 01:02:13,000 --> 01:02:16,000 Nó sẽ có được 3. 884 01:02:16,000 --> 01:02:19,000 Phần còn lại sẽ được loại bỏ, vì vậy nó có hiệu quả làm tròn- 885 01:02:19,000 --> 01:02:24,000 không phải một vòng mà là một tầng, nếu bạn đã quen thuộc với môn toán, 886 01:02:24,000 --> 01:02:27,000 nơi bạn hoàn toàn loại bỏ các số thập phân, 887 01:02:27,000 --> 01:02:31,000 và do đó bạn đang chủ yếu cắt bỏ nó xuống gần nhất 888 01:02:31,000 --> 01:02:33,000 toàn bộ vị trí, số nguyên gần nhất. 889 01:02:33,000 --> 01:02:38,000 [Sinh viên] Nhưng sau đó sẽ là vấn đề bởi vì nếu bạn có một mảng của 7 yếu tố 890 01:02:38,000 --> 01:02:43,000 sau đó tự động các yếu tố thứ 3 của trung điểm thay vì 4. 891 01:02:43,000 --> 01:02:46,000 Làm thế nào để chúng ta đối phó với điều đó? 892 01:02:46,000 --> 01:02:49,000 Đó là vấn đề bởi vì nếu chúng ta có một mảng của 7, 893 01:02:49,000 --> 01:02:54,000 nó sẽ chọn thứ 3 thay vì 4. 894 01:02:54,000 --> 01:02:56,000 Ông có thể giải thích thêm một chút? 895 01:02:56,000 --> 01:02:59,000 [Sinh viên] Bởi vì nếu bạn có 7 yếu tố sau đó các yếu tố thứ 4 896 01:02:59,000 --> 01:03:04,000 là trung điểm, phải không? 897 01:03:04,000 --> 01:03:07,000 Ghi lời nhận xét của bạn về là số không được lập chỉ mục, mặc dù. 898 01:03:07,000 --> 01:03:10,000 [Sinh viên] Yeah, vì vậy ở vị trí 3. Điều đó sẽ là trung điểm. 899 01:03:10,000 --> 01:03:12,000 Yeah. 900 01:03:12,000 --> 01:03:16,000 Oh, okay. Tôi thấy những gì bạn có ý nghĩa. 901 01:03:16,000 --> 01:03:19,000 Đó là loại lạ, như chúng ta đã quen với khái niệm này toàn bộ 902 01:03:19,000 --> 01:03:22,000 loại bỏ thập phân. 903 01:03:22,000 --> 01:03:26,000 Đó là một điểm tuyệt vời. 904 01:03:26,000 --> 01:03:30,000 Hãy hoàn thành điều này. 905 01:03:30,000 --> 01:03:32,000 Chúng tôi đã tính toán trung điểm của chúng tôi. 906 01:03:32,000 --> 01:03:37,000 >> Chúng tôi đang thử nghiệm để xem nếu kim của chúng tôi là bằng với giá trị trung bình. 907 01:03:37,000 --> 01:03:41,000 Chúng tôi đang in mà chúng tôi tìm thấy nó, nhưng thực sự, những gì chúng ta muốn làm gì trong tình huống này? 908 01:03:41,000 --> 01:03:46,000 Chúng tôi đã tìm thấy nó, vì vậy chúng tôi muốn cho người gọi biết rằng chúng tôi tìm thấy nó. 909 01:03:46,000 --> 01:03:49,000 Chúng tôi đã có một chức năng mà là một chức năng kiểu boolean. 910 01:03:49,000 --> 01:03:54,000 Cách chúng ta ra hiệu cho các người gọi của chức năng của chúng tôi rằng chúng tôi sẵn sàng để đi 911 01:03:54,000 --> 01:03:58,000 là chúng ta nói, "Này, điều này là đúng sự thật." 912 01:03:58,000 --> 01:04:00,000 Làm thế nào chúng tôi sẽ làm điều đó, Kevin? 913 01:04:00,000 --> 01:04:02,000 Bạn gật đầu của bạn. >> [Kevin] Thêm return true. 914 01:04:02,000 --> 01:04:06,000 [Nate] Chính xác, trở lại đúng sự thật. 915 01:04:06,000 --> 01:04:12,000 Bây giờ, nếu nó không bằng nhau, làm thế nào chúng ta sẽ xem xét ở nửa bên trái? 916 01:04:12,000 --> 01:04:16,000 Bất cứ ý tưởng? 917 01:04:16,000 --> 01:04:18,000 Stella, bất kỳ ý tưởng? 918 01:04:18,000 --> 01:04:21,000 Bạn cần phải thiết lập một vị trí mới cho người dùng cuối cùng. 919 01:04:21,000 --> 01:04:23,000 Yeah. 920 01:04:23,000 --> 01:04:29,000 Vì vậy, chúng ta phải làm vị trí trung điểm cuối cùng. 921 01:04:29,000 --> 01:04:33,000 Lớn. 922 01:04:33,000 --> 01:04:36,000 Chúng ta cần phải thiết lập một vị trí mới cho cuối cùng 923 01:04:36,000 --> 01:04:38,000 nhìn vào nửa bên trái. 924 01:04:38,000 --> 01:04:41,000 Đây là những gì chúng tôi nói chuyện về trước khi mà 925 01:04:41,000 --> 01:04:44,000 Tôi tiếp tục trở lại với ví dụ này. 926 01:04:44,000 --> 01:04:50,000 Tôi đã bắt đầu ở đây, và sau đó tôi có kết thúc tất cả các cách trên đây. 927 01:04:50,000 --> 01:04:53,000 >> Một lần nữa, nếu chúng ta đang tìm kiếm cho 15, và trung điểm của chúng tôi là ở tuổi 16, 928 01:04:53,000 --> 01:04:56,000 và chúng tôi nhận ra, "Rất tiếc, 16 là lớn. 929 01:04:56,000 --> 01:04:59,000 Chúng tôi muốn chuyển sang nửa bên trái. " 930 01:04:59,000 --> 01:05:02,000 Chúng tôi sau đó sẽ di chuyển kết thúc với 15, 931 01:05:02,000 --> 01:05:06,000 và chúng tôi làm điều đó bằng cách dùng một từ trung điểm 932 01:05:06,000 --> 01:05:09,000 và thiết lập như kết thúc mới của chúng tôi. 933 01:05:09,000 --> 01:05:12,000 Tương tự như vậy, nếu chúng ta muốn nhìn vào nửa bên phải, làm thế nào chúng tôi sẽ làm điều đó? 934 01:05:12,000 --> 01:05:14,000 Bạn có một ý tưởng? 935 01:05:14,000 --> 01:05:22,000 [Sinh viên] Bạn chỉ cần đặt bắt đầu trung điểm + 1. 936 01:05:22,000 --> 01:05:24,000 [Nate] Great. 937 01:05:24,000 --> 01:05:29,000 Và giờ đây, trong trường hợp mà chúng tôi không tìm thấy bất cứ điều gì, 938 01:05:29,000 --> 01:05:32,000 mà có được chăm sóc cho chúng ta? 939 01:05:32,000 --> 01:05:36,000 Daniel, mà có được đưa về chăm sóc cho chúng ta? 940 01:05:36,000 --> 01:05:38,000 [Daniel] số 941 01:05:38,000 --> 01:05:40,000 [Nate] Nếu chúng ta làm cho nó thông qua toàn bộ mảng và chúng tôi không tìm thấy bất cứ điều gì, 942 01:05:40,000 --> 01:05:42,000 nơi đó sẽ được đưa về chăm sóc, hoặc chúng ta nên chăm sóc nó? 943 01:05:42,000 --> 01:05:44,000 Daniel] điều kiện trong khi. 944 01:05:44,000 --> 01:05:48,000 [Nate] Yeah, các điều kiện trong khi, chính xác. 945 01:05:48,000 --> 01:05:51,000 Nó sẽ chăm sóc đi qua toàn bộ mảng nếu chúng ta không tìm thấy bất cứ điều gì. 946 01:05:51,000 --> 01:05:53,000 Trong khi vòng lặp này sẽ kết thúc. 947 01:05:53,000 --> 01:05:56,000 Chúng tôi sẽ không bao giờ gặp phải tình trạng này, 948 01:05:56,000 --> 01:06:03,000 và chúng tôi có thể trả về false. 949 01:06:03,000 --> 01:06:10,000 Chúng tôi cũng có thể để lại điều này nếu ở đây như thế này 950 01:06:10,000 --> 01:06:14,000 vì nếu điều này nếu tuyên bố là đúng sự thật, 951 01:06:14,000 --> 01:06:16,000 và chức năng của chúng tôi sẽ trở lại, 952 01:06:16,000 --> 01:06:21,000 và vì vậy chúng tôi sẽ cơ bản hủy bỏ chức năng này vào thời điểm này 953 01:06:21,000 --> 01:06:24,000 khi chúng ta trở lại đúng sự thật. 954 01:06:24,000 --> 01:06:28,000 Nhưng điều gì sẽ xảy ra với cấu trúc này ở đây? 955 01:06:28,000 --> 01:06:34,000 Điều này sẽ làm việc hoàn toàn, hoặc là có một số lỗ hổng logic trong đó? 956 01:06:34,000 --> 01:06:37,000 >> Có một số lỗ hổng logic trong đó, với cách thức mà nó đã được thiết lập. 957 01:06:37,000 --> 01:06:40,000 Nó có thể là gì? 958 01:06:40,000 --> 01:06:43,000 [Sinh viên] Tại sao bạn cần - và + 1 giây? 959 01:06:43,000 --> 01:06:47,000 Điều này tạo mảng của chúng tôi là mới nửa trái và nửa bên phải của chúng tôi. 960 01:06:47,000 --> 01:06:51,000 [Sinh viên] Nhưng tại sao bạn không thể làm điều đó mà không có 1 và + 1 giây? 961 01:06:51,000 --> 01:06:53,000 [Nate] Chúng ta có thể thiết lập nó bằng trung điểm? 962 01:06:53,000 --> 01:07:04,000 Điều gì có thể là vấn đề về điều đó? 963 01:07:04,000 --> 01:07:08,000 [Sinh viên] Tôi đoán nó không hiệu quả bởi vì bạn đang kiểm tra một giá trị đã được kiểm tra. 964 01:07:08,000 --> 01:07:11,000 [Nate] Chính xác, do đó, Sam là hoàn toàn đúng. 965 01:07:11,000 --> 01:07:15,000 Nếu bạn thiết lập cuối cùng và bắt đầu bằng điểm giữa 966 01:07:15,000 --> 01:07:18,000 thay vì - 1 + 1 suy, 967 01:07:18,000 --> 01:07:22,000 tại một số điểm trong tương lai, chúng tôi sẽ kết thúc kiểm tra trung điểm một lần nữa. 968 01:07:22,000 --> 01:07:26,000 [Sinh viên] Tôi bắt đầu các pset, và sau đó tôi đã có một cái gì đó như thế 969 01:07:26,000 --> 01:07:30,000 Tôi quên 1 +, và nó đã bị mắc kẹt trong một vòng lặp vô hạn. 970 01:07:30,000 --> 01:07:34,000 Đúng, bởi vì tại một số điểm bạn sẽ không bao giờ đi để có được bắt đầu và kết thúc 971 01:07:34,000 --> 01:07:39,000 để thực sự chồng chéo lên nhau. 972 01:07:39,000 --> 01:07:41,000 Cool. 973 01:07:41,000 --> 01:07:44,000 Có một lỗ hổng logic hơn, và đó là điều này chắc chắn sẽ có 974 01:07:44,000 --> 01:07:48,000 một khác nếu. 975 01:07:48,000 --> 01:07:55,000 Tại sao có thể được? 976 01:07:55,000 --> 01:07:59,000 >> Lý do là nếu nó không phải là một khác nếu bạn nhìn thấy nó, Kevin? 977 01:07:59,000 --> 01:08:02,000 [Kevin] Yeah, bởi vì bạn đang thay đổi điểm kết thúc. 978 01:08:02,000 --> 01:08:05,000 [Nate] Chính xác. 979 01:08:05,000 --> 01:08:07,000 Chúng tôi đang thay đổi các thiết bị đầu cuối, 980 01:08:07,000 --> 01:08:12,000 và nếu nó được viết như thế này-we'll không gian giữa các 981 01:08:12,000 --> 01:08:14,000 nó sẽ kiểm tra trường hợp này. 982 01:08:14,000 --> 01:08:18,000 Trường hợp này, nếu nó thành công, sẽ hủy bỏ ra khỏi chức năng. 983 01:08:18,000 --> 01:08:21,000 Sau đó, nó sẽ kiểm tra trường hợp này, 984 01:08:21,000 --> 01:08:24,000 và nếu điều này thành công, nó sẽ điều chỉnh các thiết bị đầu cuối, 985 01:08:24,000 --> 01:08:28,000 và sau đó nó sẽ tiếp tục và kiểm tra trường hợp này. 986 01:08:28,000 --> 01:08:31,000 Nhưng vào thời điểm này, chúng tôi không muốn nó tiếp tục kiểm tra. 987 01:08:31,000 --> 01:08:35,000 May mắn thay, chúng tôi đã không thiết lập lại điểm giữa ở đây, 988 01:08:35,000 --> 01:08:39,000 và chúng tôi biết rằng trường hợp này sẽ không thành công. 989 01:08:39,000 --> 01:08:44,000 Nhưng chúng tôi chắc chắn muốn đặt khác nếu có 990 01:08:44,000 --> 01:08:48,000 mặc dù điều đó có thể-trong trường hợp này 991 01:08:48,000 --> 01:08:52,000 vì chúng tôi không điều chỉnh trung điểm, sẽ tạo sự khác biệt? 992 01:08:52,000 --> 01:08:54,000 Không, bởi vì những trường hợp này là tất cả độc quyền. 993 01:08:54,000 --> 01:08:58,000 Một lần nữa, tôi xấu. 994 01:08:58,000 --> 01:09:01,000 Chúng tôi không, tôi nghĩ rằng, cần điều này nếu người nào khác. 995 01:09:01,000 --> 01:09:05,000 Chúng tôi có thể cung cấp cho nó một thử và chạy nó và xem những gì sẽ xảy ra. 996 01:09:05,000 --> 01:09:08,000 Xây dựng, một lỗi xảy ra. 997 01:09:08,000 --> 01:09:12,000 Đây có thể là bởi vì tôi rời những b và e ở đây. 998 01:09:12,000 --> 01:09:14,000 Tôi có thêm lên những ở đầu trang? 999 01:09:14,000 --> 01:09:16,000 Nó không giống như nó. 1000 01:09:16,000 --> 01:09:20,000 Chúng tôi thu nhỏ, xây dựng, 1001 01:09:20,000 --> 01:09:24,000 có nó đi, vì vậy bây giờ nếu chúng ta tìm kiếm 15, 1002 01:09:24,000 --> 01:09:28,000 Vâng. 1003 01:09:28,000 --> 01:09:30,000 Hãy để tôi phóng to. 1004 01:09:30,000 --> 01:09:33,000 15, có. Chúng tôi có thể chạy nó một lần nữa. 1005 01:09:33,000 --> 01:09:36,000 Tải lên mã nguồn, xây dựng, chạy. 1006 01:09:36,000 --> 01:09:41,000 Chúng tôi có thể tìm kiếm một cái gì đó như 13, 1007 01:09:41,000 --> 01:09:45,000 và chúng tôi không nhận được bất cứ điều gì in ra, vì vậy nó không tìm thấy điều đó cho chúng ta. 1008 01:09:45,000 --> 01:09:51,000 Đó là tuyệt vời, bởi vì nó không có trong danh sách của chúng tôi. 1009 01:09:51,000 --> 01:09:53,000 >> Chúng tôi hiện đang hết thời gian. 1010 01:09:53,000 --> 01:09:55,000 Đó là sẽ có thể là trong tuần này. 1011 01:09:55,000 --> 01:10:00,000 Cảm ơn bạn đã tham gia, và nhìn thấy bạn sau này. 1012 01:10:00,000 --> 01:10:02,000 >> [CS50.TV]