1 00:00:00,000 --> 00:00:11,100 2 00:00:11,100 --> 00:00:12,300 >> ลำโพง 1: เฮ้ทุกคน! 3 00:00:12,300 --> 00:00:13,890 ยินดีต้อนรับกลับไปยังส่วน 4 00:00:13,890 --> 00:00:17,480 ดังนั้นดีใจที่ได้เห็นจำนวนมากดังนั้นของคุณทั้งสองที่นี่ และทุกคนที่ได้ดูออนไลน์ 5 00:00:17,480 --> 00:00:18,760 6 00:00:18,760 --> 00:00:20,920 ดังนั้นที่ยินดีต้อนรับกลับมาปกติ 7 00:00:20,920 --> 00:00:24,360 ฉันหวังว่าคุณทุกคนที่น่ารัก วันหยุดสุดสัปดาห์เต็มไปด้วยส่วนที่เหลือผ่อนคลาย 8 00:00:24,360 --> 00:00:26,026 มันเป็นที่สวยงามออกมาเมื่อวานนี้ 9 00:00:26,026 --> 00:00:27,525 ดังนั้นผมหวังว่าคุณจะสนุกกับกิจกรรมกลางแจ้ง 10 00:00:27,525 --> 00:00:28,840 11 00:00:28,840 --> 00:00:30,610 >> ดังนั้นก่อนที่คู่ของประกาศ 12 00:00:30,610 --> 00:00:31,920 13 00:00:31,920 --> 00:00:32,700 การจัดลำดับ 14 00:00:32,700 --> 00:00:37,350 ดังนั้นส่วนใหญ่ของคุณควรจะมีอากาศ อีเมลจากฉันเกี่ยวกับ Pset Scratch ของคุณ 15 00:00:37,350 --> 00:00:39,920 เช่นเดียวกับการจัดลำดับสำหรับ Pset 1 16 00:00:39,920 --> 00:00:41,000 17 00:00:41,000 --> 00:00:42,220 ดังนั้นเพียงแค่สิ่งที่สอง 18 00:00:42,220 --> 00:00:45,150 โปรดใช้ check50 ใน style50 19 00:00:45,150 --> 00:00:47,250 เหล่านี้จะหมายถึงการเป็น ทรัพยากรสำหรับพวกคุณ 20 00:00:47,250 --> 00:00:50,660 เพื่อให้แน่ใจว่าคุณได้รับ แต้มมากที่สุดเท่าที่จะทำได้ 21 00:00:50,660 --> 00:00:52,390 โดยไม่จำเป็นต้องสูญเสียพวกเขา 22 00:00:52,390 --> 00:00:54,407 ดังนั้นสิ่งที่ชอบสไตล์ มีความสำคัญมาก 23 00:00:54,407 --> 00:00:55,740 พวกเราจะไปถอดมัน 24 00:00:55,740 --> 00:00:58,115 บางท่านอาจจะมีอยู่แล้ว สังเกตเห็นว่าจาก Pset ของคุณ 25 00:00:58,115 --> 00:00:58,920 26 00:00:58,920 --> 00:01:01,450 และ check50 เป็นเพียง วิธีที่ง่ายมากที่จะทำให้แน่ใจว่า 27 00:01:01,450 --> 00:01:05,050 ที่เรากำลังจะกลับมาจริงสิ่งที่ จะต้องมีการส่งกลับไปยังผู้ใช้ 28 00:01:05,050 --> 00:01:06,690 และทุกอย่างที่ทำงานอย่างถูกต้อง 29 00:01:06,690 --> 00:01:08,690 30 00:01:08,690 --> 00:01:12,040 >> ในบันทึกที่สองให้แน่ใจว่าคุณ อัปโหลดสิ่งที่โฟลเดอร์ที่ถูกต้อง 31 00:01:12,040 --> 00:01:14,470 มันทำให้ชีวิตของฉันเพียงแค่ นิด ๆ หน่อย ๆ ยากขึ้น 32 00:01:14,470 --> 00:01:18,836 หากคุณอัปโหลด Pset 2 เป็น Pset 1 เพราะเมื่อฉันดาวน์โหลดสิ่ง 33 00:01:18,836 --> 00:01:20,085 พวกเขาไม่ได้ดาวน์โหลดอย่างถูกต้อง 34 00:01:20,085 --> 00:01:21,690 35 00:01:21,690 --> 00:01:24,560 และฉันรู้ว่ามันเป็น wonky น้อย ในระบบการรับใช้, 36 00:01:24,560 --> 00:01:26,950 แต่เพียงเป็นซุปเปอร์ ระวังถ้าเพียงสำหรับฉัน 37 00:01:26,950 --> 00:01:30,080 เพื่อที่ว่าเมื่อคุณได้รับอีเมล เช่นที่ 02:00 และฉันให้คะแนน 38 00:01:30,080 --> 00:01:33,710 ถ้าไม่ได้ทำให้ผมต้องมอง ทุกรอบสำหรับ Pset ของคุณ 39 00:01:33,710 --> 00:01:34,440 เย็น 40 00:01:34,440 --> 00:01:37,270 >> ฉันรู้ว่ามันยังเร็ว แต่ฉัน ทั้งหมดได้นำตัวออกจากยาม 41 00:01:37,270 --> 00:01:40,800 โดยการเขียนเรียงความที่เกิดวันศุกร์นี้ว่า อาจารย์ของฉันได้เช่นเดียวกับโอ้ใช่ 42 00:01:40,800 --> 00:01:42,550 โปรดจำไว้ว่าคุณมี เรียงความเนื่องจากในวันศุกร์ที่ 43 00:01:42,550 --> 00:01:45,780 ดังนั้นผมรู้ว่าไม่มีใครชอบ คิดเกี่ยวกับ midterms, 44 00:01:45,780 --> 00:01:50,620 แต่คำถามแรกของคุณคือในวันที่ 15 ตุลาคม ซึ่งตุลาคมจะเริ่มต้นในสัปดาห์นี้ 45 00:01:50,620 --> 00:01:53,290 ดังนั้นมันอาจจะเร็ว กว่าที่คุณคาดว่าจะเป็น 46 00:01:53,290 --> 00:01:57,510 เพื่อให้คุณไม่ได้โยนออกยามเมื่อ ฉันพูดถึงส่วนสัปดาห์ถัดไปว่าโอ้ 47 00:01:57,510 --> 00:02:00,560 แบบทดสอบสัปดาห์ถัดไปของคุณผมคิดว่า ฉันต้องการให้คุณนิด ๆ หน่อย ๆ 48 00:02:00,560 --> 00:02:01,500 ของหัวขึ้นตอนนี้ 49 00:02:01,500 --> 00:02:02,970 50 00:02:02,970 --> 00:02:04,660 >> ดังนั้นปัญหาของคุณได้ตั้งเลขที่สาม 51 00:02:04,660 --> 00:02:07,070 ว่าคนที่ได้อ่าน สเป็คออกมาจากความอยากรู้? 52 00:02:07,070 --> 00:02:08,560 53 00:02:08,560 --> 00:02:09,199 ตกลง 54 00:02:09,199 --> 00:02:10,229 เรามีคู่ 55 00:02:10,229 --> 00:02:12,320 ชนิดของลงมาจากที่ผ่านมา สัปดาห์ แต่ที่ตกลง 56 00:02:12,320 --> 00:02:13,650 ฉันรู้ว่ามันเป็นภาพที่สวยงามออกมา 57 00:02:13,650 --> 00:02:15,120 58 00:02:15,120 --> 00:02:16,660 ดังนั้น Break Out 59 00:02:16,660 --> 00:02:21,010 แน่นอนหลังจากที่คุณได้ทำ วันนี้อ่านข้อมูลจำเพาะของคุณอย่างน้อย 60 00:02:21,010 --> 00:02:25,240 พยายามเช่นการดาวน์โหลด รหัสการจัดจำหน่ายและการทำงาน 61 00:02:25,240 --> 00:02:27,430 เช่นเดียวกับการเริ่มต้นครั้งแรก สิ่งที่พวกเขาขอให้คุณ 62 00:02:27,430 --> 00:02:28,681 63 00:02:28,681 --> 00:02:32,590 เพราะเรากำลังใช้ รหัสการจัดจำหน่ายและห้องสมุด 64 00:02:32,590 --> 00:02:36,790 ที่เราได้รับเพียง using-- --It เพียง เป็นครั้งที่สองที่เราเคยทำ Pset นี้ 65 00:02:36,790 --> 00:02:38,650 สิ่งที่สามารถเกิดขึ้นได้บ้า กับเครื่องของคุณ 66 00:02:38,650 --> 00:02:41,370 และคุณต้องการที่จะพบว่า ออกตอนนี้เมื่อเทียบกับในภายหลัง 67 00:02:41,370 --> 00:02:45,570 >> เพราะถ้ามันเป็นคืนวันพฤหัสบดีหรือเป็น คืนวันพุธและด้วยเหตุผลบางอย่าง 68 00:02:45,570 --> 00:02:48,912 เครื่องใช้ไฟฟ้าของคุณเพียงแค่ไม่ได้ ต้องการที่จะทำงานกับห้องสมุด 69 00:02:48,912 --> 00:02:50,620 หรือมีการกระจาย รหัสที่หมายถึง 70 00:02:50,620 --> 00:02:52,309 คุณไม่ได้เริ่มต้นทำเข้ารหัส 71 00:02:52,309 --> 00:02:54,100 เพราะคุณไม่สามารถตรวจสอบ เพื่อดูว่ามันทำงาน 72 00:02:54,100 --> 00:02:55,975 ไม่ gonna ของคุณจะสามารถ เพื่อดูว่าจะรวบรวม 73 00:02:55,975 --> 00:03:00,500 คุณต้องการที่จะดูแลคนในช่วงต้น สัปดาห์เมื่อคุณยังสามารถส่งอีเมลฉัน 74 00:03:00,500 --> 00:03:03,100 หรือหนึ่งใน TFS อื่น ๆ และเราจะได้รับผู้ที่ได้รับการแก้ไข 75 00:03:03,100 --> 00:03:05,410 เพราะผู้ที่มีปัญหา ที่กำลังจะหยุดคุณ 76 00:03:05,410 --> 00:03:07,120 ความคืบหน้าจากการทำจริงใด ๆ 77 00:03:07,120 --> 00:03:10,055 มันไม่เหมือนหนึ่งในข้อผิดพลาดที่ คุณสามารถเพียงชนิดของข้าม 78 00:03:10,055 --> 00:03:10,712 79 00:03:10,712 --> 00:03:13,420 หากคุณกำลังมีปัญหาเกี่ยวกับคุณ เครื่องใช้หรือรหัสการจัดจำหน่าย 80 00:03:13,420 --> 00:03:16,211 คุณต้องการที่จะได้รับการดำเนินการที่ ดูแลเร็วแทนที่จะในภายหลัง 81 00:03:16,211 --> 00:03:20,410 ดังนั้นแม้ว่าคุณจะไม่ gonna จริง เริ่มเขียนโปรแกรมดาวน์โหลดกระจาย 82 00:03:20,410 --> 00:03:24,040 รหัสอ่านสเป็คให้แน่ใจว่า ทุกอย่างที่ทำงานอยู่ที่นั่น 83 00:03:24,040 --> 00:03:25,134 OK? 84 00:03:25,134 --> 00:03:27,675 หากคุณเพียงแค่สามารถทำที่ผม สัญญาว่าชีวิตของคุณจะง่ายขึ้น 85 00:03:27,675 --> 00:03:28,800 86 00:03:28,800 --> 00:03:31,410 และเพื่อให้คุณอาจจะ ที่จะทำมันในตอนนี้ใช่มั้ย? 87 00:03:31,410 --> 00:03:32,100 ตกลง 88 00:03:32,100 --> 00:03:33,950 ดังนั้นคำถามใด ๆ ที่นั่น? 89 00:03:33,950 --> 00:03:35,850 สิ่งใดโลจิสติก? 90 00:03:35,850 --> 00:03:36,910 ทุกคนที่ดี? 91 00:03:36,910 --> 00:03:38,270 ตกลง 92 00:03:38,270 --> 00:03:41,700 >> ขอสงวนสิทธิ์สำหรับผู้ที่ คุณอยู่ในห้องและออนไลน์ 93 00:03:41,700 --> 00:03:45,437 ฉันจะพยายามที่จะเปลี่ยน ระหว่าง PowerPoint ในเครื่อง 94 00:03:45,437 --> 00:03:47,270 เพราะเราจะไป จะทำรหัสบางอย่าง 95 00:03:47,270 --> 00:03:53,630 วันนี้ได้รับความนิยมของที่ไม่ระบุชื่อ การสำรวจความคิดเห็นข้อเสนอแนะของฉันส่งออกเมื่อสัปดาห์ที่แล้ว 96 00:03:53,630 --> 00:03:55,480 ดังนั้นเราจะทำบาง coding 97 00:03:55,480 --> 00:03:57,800 ดังนั้นถ้าพวกคุณยังต้องการ ไฟขึ้นเครื่องของคุณ 98 00:03:57,800 --> 00:04:02,910 และคุณควรจะได้มีการส่งอีเมล์ จากฉันกับไฟล์ตัวอย่าง 99 00:04:02,910 --> 00:04:04,310 กรุณาอย่าลังเลที่จะทำเช่นนั้น 100 00:04:04,310 --> 00:04:07,340 >> ดังนั้นเรากำลังจะพูดคุยเกี่ยวกับ GDB ซึ่งเป็นบั๊ก 101 00:04:07,340 --> 00:04:09,970 มันจะช่วยให้คุณ ชนิดของคิดออกว่า 102 00:04:09,970 --> 00:04:11,860 สิ่งที่จะไปอย่างผิดปกติในรหัสของคุณ 103 00:04:11,860 --> 00:04:15,370 มันจริงๆเพียงวิธีการที่คุณจะก้าว รหัสผ่านของคุณในขณะที่มันเกิดขึ้น 104 00:04:15,370 --> 00:04:19,100 และสามารถที่จะพิมพ์ออกมาตัวแปร หรือดูสิ่งที่เกิดขึ้นจริง 105 00:04:19,100 --> 00:04:22,980 ภายใต้ประทุนข้อโปรแกรมของคุณ เพียงแค่ใช้มันก็เหมือน faulting, 106 00:04:22,980 --> 00:04:25,030 และคุณชอบความคิด สิ่งที่เพิ่งเกิดขึ้นที่นี่ 107 00:04:25,030 --> 00:04:26,730 ผมไม่ทราบว่าสิ่งที่สายมันล้มเหลวที่ 108 00:04:26,730 --> 00:04:29,040 ผมไม่ทราบว่ามันผิดพลาดไป 109 00:04:29,040 --> 00:04:31,280 ดังนั้น GDB จะช่วยให้คุณกับที่ 110 00:04:31,280 --> 00:04:35,240 นอกจากนี้ถ้าคุณตัดสินใจที่จะ ยังคงใช่และใช้เวลา 61, 111 00:04:35,240 --> 00:04:38,430 มันจะจริงๆจริงๆของคุณ เพื่อนที่ดีที่สุดเพราะผมสามารถบอกคุณได้ 112 00:04:38,430 --> 00:04:40,840 เพราะฉันจะผ่านชั้นเรียนที่ 113 00:04:40,840 --> 00:04:43,620 >> เรากำลังจะไปดูที่ฐาน ค้นหาซึ่งถ้าพวกคุณจำได้ 114 00:04:43,620 --> 00:04:47,540 ตัวอย่างเช่นสมุดโทรศัพท์ที่ดี ปรากฏการณ์จากชั้นเรียน 115 00:04:47,540 --> 00:04:50,620 เราจะดำเนินการนั้นและ เดินผ่านว่านิด ๆ หน่อย ๆ เพิ่มเติม 116 00:04:50,620 --> 00:04:54,650 แล้วเรากำลังจะผ่านสี่ ประเภทที่แตกต่างกันซึ่งเป็นฟอง 117 00:04:54,650 --> 00:04:56,285 การเลือกการใส่และการผสาน 118 00:04:56,285 --> 00:04:57,830 119 00:04:57,830 --> 00:04:58,330 เย็น 120 00:04:58,330 --> 00:05:00,390 ดังนั้น GDB ที่ผมกล่าวถึงเป็นบั๊ก 121 00:05:00,390 --> 00:05:01,400 122 00:05:01,400 --> 00:05:09,370 และเหล่านี้เป็นชนิดของขนาดใหญ่ สิ่งที่ฟังก์ชั่นขนาดใหญ่หรือคำสั่ง 123 00:05:09,370 --> 00:05:13,240 ที่คุณใช้ใน GDB และผมจะเดิน คุณผ่านการสาธิตของมันในครั้งที่สอง 124 00:05:13,240 --> 00:05:15,360 >> ดังนั้นนี้ไม่ได้เป็นเพียง จะอยู่นามธรรม 125 00:05:15,360 --> 00:05:18,000 ผมจะพยายามและทำให้มันเป็นรูปธรรม เป็นไปได้สำหรับพวกคุณ 126 00:05:18,000 --> 00:05:19,870 ดังนั้นการหยุดพัก 127 00:05:19,870 --> 00:05:22,200 อย่างใดอย่างหนึ่งจะหยุดพัก เช่นตัวเลขบางอย่างที่ 128 00:05:22,200 --> 00:05:26,900 หนึ่งเส้นในโปรแกรมของคุณ, หรือคุณสามารถตั้งชื่อฟังก์ชั่น 129 00:05:26,900 --> 00:05:30,150 ดังนั้นถ้าคุณจะพูดว่าทำลายหลัก มันจะหยุดที่หลัก 130 00:05:30,150 --> 00:05:32,400 และปล่อยให้คุณเดินผ่านฟังก์ชั่นที่ 131 00:05:32,400 --> 00:05:36,350 >> ในทำนองเดียวกันถ้าคุณมีบางภายนอก ทำงานเหมือน Swap หรือ Cube, 132 00:05:36,350 --> 00:05:38,450 ที่เรามองไปที่เมื่อสัปดาห์ที่แล้ว 133 00:05:38,450 --> 00:05:41,780 ถ้าคุณบอกว่าทำลายหนึ่งในบรรดา เมื่อใดก็ตามที่โปรแกรมของคุณผู้ชมว่า 134 00:05:41,780 --> 00:05:44,290 มันจะรอให้คุณ บอกว่าสิ่งที่จะทำ 135 00:05:44,290 --> 00:05:47,860 ก่อนที่มันก็จะดำเนินการเพื่อให้คุณ จริงจะก้าวเข้ามาทำงาน 136 00:05:47,860 --> 00:05:49,020 และดูสิ่งที่เกิดขึ้น 137 00:05:49,020 --> 00:05:50,370 138 00:05:50,370 --> 00:05:53,515 ดังนั้นต่อไปเพียงแค่ข้ามผ่าน บรรทัดถัดไปฟังก์ชั่นมากกว่า 139 00:05:53,515 --> 00:05:54,730 140 00:05:54,730 --> 00:05:55,560 ขั้นตอน 141 00:05:55,560 --> 00:05:56,810 เหล่านี้เป็นนามธรรมน้อยทั้งหมด 142 00:05:56,810 --> 00:06:00,530 ดังนั้นฉันแค่ไปทำงานผ่านพวกเขา แต่คุณจะเห็นพวกเขาในการใช้งานในครั้งที่สอง 143 00:06:00,530 --> 00:06:01,810 >> ขั้นตอนในการทำงาน 144 00:06:01,810 --> 00:06:04,170 ดังนั้นขณะที่ผมกำลังพูดว่า เช่นเดียวกับการแลกเปลี่ยนก็จะ 145 00:06:04,170 --> 00:06:07,110 ช่วยให้คุณสามารถเป็นจริงถ้าคุณอยู่ เหมือนร่างกายก้าวภายใน 146 00:06:07,110 --> 00:06:10,990 คุณสามารถกินอาหารที่มีตัวแปรที่พิมพ์ จากสิ่งที่พวกเขาเห็นสิ่งที่เกิดขึ้น 147 00:06:10,990 --> 00:06:12,140 148 00:06:12,140 --> 00:06:14,830 รายการจะตามตัวอักษรเพียงแค่พิมพ์ ออกรหัสโดยรอบ 149 00:06:14,830 --> 00:06:17,570 ดังนั้นถ้าคุณชนิดของลืม ที่ที่คุณอยู่ในโปรแกรมของคุณ 150 00:06:17,570 --> 00:06:19,880 หรือที่คุณสงสัย สิ่งที่เกิดขึ้นรอบ ๆ 151 00:06:19,880 --> 00:06:23,790 นี้ก็จะพิมพ์ออกมาส่วน เช่นห้าหรือหกเส้นรอบมัน 152 00:06:23,790 --> 00:06:26,080 ดังนั้นคุณจะได้รับการเน้น เกี่ยวกับที่ที่คุณอยู่ 153 00:06:26,080 --> 00:06:27,230 154 00:06:27,230 --> 00:06:28,650 >> พิมพ์ตัวแปรบาง 155 00:06:28,650 --> 00:06:34,590 ดังนั้นถ้าคุณมีความสำคัญเช่น ในซีซาร์ว่าเราจะมองไปที่ 156 00:06:34,590 --> 00:06:36,220 คุณสามารถพูดได้สั่งพิมพ์ที่จุดใด 157 00:06:36,220 --> 00:06:40,070 มันจะบอกคุณว่ามีค่าเป็นดังนั้น ที่อาจจะอยู่ที่ไหนสักแห่งไปพร้อมกัน 158 00:06:40,070 --> 00:06:42,070 คุณเขียนทับที่สำคัญของคุณ 159 00:06:42,070 --> 00:06:45,495 จริงๆคุณสามารถบอกได้ว่าเพราะ จริงคุณสามารถดูค่าที่ 160 00:06:45,495 --> 00:06:46,500 161 00:06:46,500 --> 00:06:48,780 >> ในชาวบ้านเพียงแค่พิมพ์ ออกตัวแปรท้องถิ่นของคุณ 162 00:06:48,780 --> 00:06:53,120 ดังนั้นตลอดเวลาที่คุณอยู่ในห่วง และคุณก็ต้องการที่จะเห็นเช่นโอ้ 163 00:06:53,120 --> 00:06:54,270 ของฉันฉันคืออะไร? 164 00:06:54,270 --> 00:06:57,020 เป็นสิ่งที่มีค่าที่สำคัญนี้ ที่ฉันเริ่มต้นที่นี่? 165 00:06:57,020 --> 00:06:58,537 คืออะไร? ข้อความที่จุดนี้ 166 00:06:58,537 --> 00:07:00,370 มันก็จะพิมพ์ทั้งหมด ของคนเหล่านั้นเพื่อให้คุณ 167 00:07:00,370 --> 00:07:04,330 จะได้ไม่ต้องเป็นรายบุคคล พูดพิมพ์ I. พิมพ์ข้อความ 168 00:07:04,330 --> 00:07:04,970 สั่งพิมพ์ 169 00:07:04,970 --> 00:07:06,190 170 00:07:06,190 --> 00:07:07,700 แล้วแสดง 171 00:07:07,700 --> 00:07:10,370 อะไรที่ไม่เป็นคุณ ก้าวผ่านโปรแกรม 172 00:07:10,370 --> 00:07:13,980 มันก็จะตรวจสอบให้แน่ใจว่ามันเป็น แสดงตัวแปรบางบาง 173 00:07:13,980 --> 00:07:14,780 ทุกจุด 174 00:07:14,780 --> 00:07:17,160 เพื่อให้คุณ also-- --it เป็น ชนิดของทางลัดที่ 175 00:07:17,160 --> 00:07:19,530 คุณจะได้ไม่ต้องเก็บไปเหมือนโอ้ 176 00:07:19,530 --> 00:07:23,150 สั่งพิมพ์หรือ Print I. มันก็ จะทำโดยอัตโนมัติสำหรับคุณ 177 00:07:23,150 --> 00:07:25,959 >> ดังนั้นกับที่เรากำลังจะ เพื่อดูว่านี้ไป 178 00:07:25,959 --> 00:07:28,000 ฉันจะพยายามและสวิทช์ ไปยังเครื่องของฉัน 179 00:07:28,000 --> 00:07:30,200 180 00:07:30,200 --> 00:07:31,271 ดูว่าฉันสามารถทำเช่นนี้ 181 00:07:31,271 --> 00:07:31,770 ทั้งหมด 182 00:07:31,770 --> 00:07:40,970 183 00:07:40,970 --> 00:07:42,370 เรากำลังจะสะท้อนมัน 184 00:07:42,370 --> 00:07:44,530 ไม่มีอะไรบ้าเป็น แล็ปท็อปของฉัน anyways 185 00:07:44,530 --> 00:07:49,600 186 00:07:49,600 --> 00:07:50,100 ตกลง 187 00:07:50,100 --> 00:07:57,030 188 00:07:57,030 --> 00:08:01,054 นี้จะต้องเป็นหนึ่งในนี้ 189 00:08:01,054 --> 00:08:01,795 มันเล็กมากจน 190 00:08:01,795 --> 00:08:03,730 191 00:08:03,730 --> 00:08:05,120 ลองดูว่าเราสามารถทำเช่นนี้ 192 00:08:05,120 --> 00:08:09,970 193 00:08:09,970 --> 00:08:10,940 >> ตกลง 194 00:08:10,940 --> 00:08:15,305 อลิซเป็นที่เห็นได้ชัดดิ้นรน ที่นี่เพียงนิด ๆ หน่อย ๆ 195 00:08:15,305 --> 00:08:17,995 แต่เราจะได้รับมันใน Momento 196 00:08:17,995 --> 00:08:20,810 197 00:08:20,810 --> 00:08:22,020 ตกลง 198 00:08:22,020 --> 00:08:25,900 เราเป็นเพียงแค่จะเพิ่มขึ้นนี้ 199 00:08:25,900 --> 00:08:28,770 200 00:08:28,770 --> 00:08:29,380 ตกลง 201 00:08:29,380 --> 00:08:31,679 ทุกคนสามารถชนิดของเห็นว่า? 202 00:08:31,679 --> 00:08:32,470 อาจจะนิด ๆ หน่อย ๆ ? 203 00:08:32,470 --> 00:08:33,594 ฉันรู้ว่ามันเล็ก ๆ น้อย ๆ 204 00:08:33,594 --> 00:08:34,570 205 00:08:34,570 --> 00:08:37,530 คุณไม่สามารถค่อนข้างคิดออก วิธีที่จะทำให้ขนาดใหญ่นี้ 206 00:08:37,530 --> 00:08:38,350 ถ้าใครรู้ 207 00:08:38,350 --> 00:08:40,309 ไม่มีใครรู้วิธีที่จะทำให้มันมีขนาดใหญ่? 208 00:08:40,309 --> 00:08:40,932 ตกลง 209 00:08:40,932 --> 00:08:42,140 เรากำลังจะไปม้วนกับมัน 210 00:08:42,140 --> 00:08:45,801 ไม่สำคัญว่า anyways เพราะมันเป็นเพียงแค่ นั่นคือรหัสที่พวกคุณควร 211 00:08:45,801 --> 00:08:46,300 มี 212 00:08:46,300 --> 00:08:48,310 >> สิ่งที่สำคัญมากขึ้น เป็นขั้วที่นี่ 213 00:08:48,310 --> 00:08:52,840 214 00:08:52,840 --> 00:08:58,690 และเรามีที่นี่มันมีขนาดเล็กดังนั้นทำไม? 215 00:08:58,690 --> 00:09:02,325 216 00:09:02,325 --> 00:09:02,825 การตั้งค่า 217 00:09:02,825 --> 00:09:07,920 218 00:09:07,920 --> 00:09:08,420 โอ้ 219 00:09:08,420 --> 00:09:09,500 ทรูไอค์ 220 00:09:09,500 --> 00:09:10,880 วิธีนี้คืออะไร 221 00:09:10,880 --> 00:09:11,770 ออกจากที่นั่น 222 00:09:11,770 --> 00:09:19,370 223 00:09:19,370 --> 00:09:21,810 ที่ดีกว่าสำหรับทุกคนหรือไม่ 224 00:09:21,810 --> 00:09:22,525 ตกลง ,. 225 00:09:22,525 --> 00:09:23,025 เย็น 226 00:09:23,025 --> 00:09:25,830 227 00:09:25,830 --> 00:09:28,220 >> คุณจะรู้ว่าเมื่อคุณอยู่ใน CS ปัญหาทางเทคนิคชั้น 228 00:09:28,220 --> 00:09:32,971 เป็นชนิดของส่วนหนึ่งของการยกกำลัง ดังนั้นขอล้างนี้ 229 00:09:32,971 --> 00:09:33,470 ตกลง 230 00:09:33,470 --> 00:09:38,060 ดังนั้นที่นี่ในส่วน ที่เรามีที่นี่ 231 00:09:38,060 --> 00:09:40,830 ซีซาร์เป็นแฟ้มที่ปฏิบัติการ 232 00:09:40,830 --> 00:09:41,800 ดังนั้นฉันทำมัน 233 00:09:41,800 --> 00:09:46,370 ดังนั้นสิ่งหนึ่งที่จะตระหนักกับ GDB เป็น ว่ามันทำงานได้เฉพาะในแฟ้มที่ปฏิบัติการได้ 234 00:09:46,370 --> 00:09:48,040 ดังนั้นคุณจะไม่สามารถเรียกใช้งานบน DOTSY 235 00:09:48,040 --> 00:09:50,532 คุณต้องจริงให้ ตรวจสอบว่ารหัสของคุณคอมไพล์ 236 00:09:50,532 --> 00:09:51,865 และที่จริงสามารถทำงานได้ 237 00:09:51,865 --> 00:09:52,970 238 00:09:52,970 --> 00:09:56,186 >> เพื่อให้แน่ใจว่าถ้ามันไม่ได้ รวบรวมได้ไปรวบรวม 239 00:09:56,186 --> 00:09:57,810 เพื่อให้คุณชนิดของสามารถเรียกใช้ผ่านมัน 240 00:09:57,810 --> 00:10:04,590 ดังนั้นการเริ่มต้น GDB สิ่งที่คุณทำ ชนิด GDB กลอเรียและจากนั้นเพียง 241 00:10:04,590 --> 00:10:06,250 แฟ้มที่คุณต้องการ 242 00:10:06,250 --> 00:10:08,240 ฉันมักจะสะกดซีซาร์ 243 00:10:08,240 --> 00:10:11,730 แต่คุณต้องการให้แน่ใจว่า เนื่องจากเป็นปฏิบัติการ, 244 00:10:11,730 --> 00:10:14,210 TI เป็นจุดแฟลชเพื่อให้ หมายความว่าคุณกำลังจะ 245 00:10:14,210 --> 00:10:19,240 เพื่อให้ทำงานได้ CSI คุณกำลังจะดำเนินการ ไฟล์นี้ทั้งที่มีการดีบัก 246 00:10:19,240 --> 00:10:19,910 ตกลง 247 00:10:19,910 --> 00:10:22,885 ดังนั้นคุณไม่ว่าคุณจะได้รับ ชนิดของความหมายนี้ 248 00:10:22,885 --> 00:10:24,250 249 00:10:24,250 --> 00:10:25,750 มันเป็นเพียงแค่ทุกสิ่งที่เกี่ยวกับการดีบัก 250 00:10:25,750 --> 00:10:28,200 คุณไม่ได้จริงๆต้อง กังวลเกี่ยวกับการได้ในขณะนี้ 251 00:10:28,200 --> 00:10:31,460 และในขณะที่คุณเห็นเรามีนี้ parens เปิดจีดีพี parens ปิด 252 00:10:31,460 --> 00:10:34,690 และเพียงแค่ชนิดของลักษณะเช่น บรรทัดคำสั่งของเราใช่มั้ย? 253 00:10:34,690 --> 00:10:37,010 >> ดังนั้นสิ่งที่เราต้องการที่จะ do-- --So สิ่งแรกที่ 254 00:10:37,010 --> 00:10:39,570 คือเราต้องการที่จะเลือก สถานที่ที่จะทำลายมัน 255 00:10:39,570 --> 00:10:42,332 ดังนั้นมีเป็นหนึ่งในข้อผิดพลาด ในโปรแกรมนี้ซีซาร์ 256 00:10:42,332 --> 00:10:44,290 ที่ผมแนะนำว่า เรากำลังจะไปหา 257 00:10:44,290 --> 00:10:45,330 258 00:10:45,330 --> 00:10:56,350 มันสิ่งที่มันไม่เป็นก็จะมีการป้อนข้อมูล Barfoo ในตัวพิมพ์ใหญ่ทั้งหมดและด้วยเหตุผลบางอย่าง 259 00:10:56,350 --> 00:11:01,950 มันไม่ได้เปลี่ยน A. มันเพียงใบ มันคนเดียวเป็นทุกสิ่งทุกอย่างที่ถูกต้อง 260 00:11:01,950 --> 00:11:03,980 แต่จดหมายฉบับที่สอง ยังคงไม่เปลี่ยนแปลง 261 00:11:03,980 --> 00:11:07,120 ดังนั้นเราจะพยายาม คิดออกว่าทำไมที่ 262 00:11:07,120 --> 00:11:10,440 ดังนั้นสิ่งแรกที่คุณมักจะ อยากจะทำเมื่อใดก็ตามที่คุณเริ่มต้นใน GDB 263 00:11:10,440 --> 00:11:12,010 จะคิดออกว่าจะทำลายมัน 264 00:11:12,010 --> 00:11:14,956 >> ดังนั้นซีซาร์เป็นโปรแกรมสั้นสวย 265 00:11:14,956 --> 00:11:16,330 เราเพียงแค่มีการทำงานอย่างใดอย่างหนึ่งใช่มั้ย? 266 00:11:16,330 --> 00:11:18,520 สิ่งที่เป็นหน้าที่ของเราในซีซาร์? 267 00:11:18,520 --> 00:11:19,590 268 00:11:19,590 --> 00:11:24,350 มีเพียงหนึ่งฟังก์ชั่นที่เหมาะสมเป็นหลัก? 269 00:11:24,350 --> 00:11:26,490 หลักคือฟังก์ชั่น สำหรับโปรแกรมทั้งหมดของคุณ 270 00:11:26,490 --> 00:11:29,230 หากคุณไม่ได้มีหลักฉันอาจ เป็นเพียงเล็กน้อยกังวลในขณะนี้ 271 00:11:29,230 --> 00:11:31,000 แต่ฉันหวังว่าคุณทุกคนมีหลักในการมี 272 00:11:31,000 --> 00:11:34,150 ดังนั้นสิ่งที่เราสามารถทำได้เราจะสามารถ เพียงทำลายหลักเช่นเดียวกับที่ 273 00:11:34,150 --> 00:11:35,190 ดังนั้นจึงกล่าวว่าตกลง 274 00:11:35,190 --> 00:11:37,430 เราตั้งจุดพักหนึ่งเรามี 275 00:11:37,430 --> 00:11:42,870 >> ดังนั้นตอนนี้สิ่งที่ต้องจำไว้เป็นซีซาร์ ใช้คำสั่งหนึ่งที่เหมาะสมอาร์กิวเมนต์บรรทัด 276 00:11:42,870 --> 00:11:45,150 และเรายังไม่ได้ทำที่ใดก็ได้ยัง 277 00:11:45,150 --> 00:11:47,560 ดังนั้นสิ่งที่คุณทำคือเมื่อ คุณจริงไปทำงาน 278 00:11:47,560 --> 00:11:51,540 โปรแกรมโปรแกรมใด ๆ ที่คุณ ทำงานใน GDB ที่ต้องการบรรทัดคำสั่ง 279 00:11:51,540 --> 00:11:55,010 ข้อโต้แย้งที่คุณกำลังจะเข้า เมื่อคุณเริ่มต้นครั้งแรกที่ใช้มัน 280 00:11:55,010 --> 00:11:59,280 ดังนั้นในกรณีนี้ที่เราทำ ทำงานด้วยความสำคัญของสาม 281 00:11:59,280 --> 00:12:00,770 282 00:12:00,770 --> 00:12:02,040 และเป็นจริงจะเริ่มต้น 283 00:12:02,040 --> 00:12:08,480 >> ดังนั้นถ้าคุณดูที่นี่เรามี หาก RC ไม่เท่ากับ 2 284 00:12:08,480 --> 00:12:12,210 ดังนั้นถ้าพวกคุณทุกคนต้องมี ไฟล์ที่ผมส่งถึงที่ 285 00:12:12,210 --> 00:12:15,100 คุณจะเห็นว่าเหมือน บรรทัดแรกฟังก์ชั่นหลักของเราใช่มั้ย? 286 00:12:15,100 --> 00:12:17,890 มันตรวจสอบเพื่อดูว่ามีสินค้า หมายเลขที่ถูกต้องของการขัดแย้ง 287 00:12:17,890 --> 00:12:20,620 ดังนั้นถ้าคุณกำลังสงสัยว่า ถ้า RC ถูกต้อง 288 00:12:20,620 --> 00:12:23,250 คุณสามารถทำสิ่งที่ต้องการเพียงแค่พิมพ์ RC 289 00:12:23,250 --> 00:12:24,380 290 00:12:24,380 --> 00:12:28,640 RC สองซึ่งเป็น สิ่งที่เราคาดว่าใช่มั้ย? 291 00:12:28,640 --> 00:12:32,010 >> ดังนั้นเราสามารถไปต่อไป และดำเนินการผ่าน 292 00:12:32,010 --> 00:12:33,200 ดังนั้นเรามีที่สำคัญมี 293 00:12:33,200 --> 00:12:34,260 294 00:12:34,260 --> 00:12:37,090 และเราสามารถพิมพ์ออกที่สำคัญของเรา เพื่อให้แน่ใจว่าถูกต้อง 295 00:12:37,090 --> 00:12:38,380 296 00:12:38,380 --> 00:12:39,500 น่าสนใจ 297 00:12:39,500 --> 00:12:41,210 ไม่มากสิ่งที่เราคาดว่า 298 00:12:41,210 --> 00:12:44,810 ดังนั้นสิ่งหนึ่งที่จะตระหนักถึง กับ GDB ยังเป็น 299 00:12:44,810 --> 00:12:49,000 ว่ามันไม่ได้จนกว่าคุณจะตีจริง ถัดไปที่บรรทัดที่คุณเพิ่งเห็น 300 00:12:49,000 --> 00:12:50,720 จะถูกดำเนินการจริง 301 00:12:50,720 --> 00:12:53,870 ดังนั้นในกรณีนี้ที่สำคัญ ยังไม่ได้รับมอบหมายยัง 302 00:12:53,870 --> 00:12:57,050 ดังนั้นที่สำคัญคือค่าขยะบางอย่าง ที่คุณเห็นอยู่ด้านล่างมี 303 00:12:57,050 --> 00:13:03,680 ลบ $ 120-- --It ของหนึ่งพันล้าน และบางสิ่งบางอย่างสิ่งที่แปลกใช่มั้ย? 304 00:13:03,680 --> 00:13:05,340 มันไม่สำคัญว่าเราคาดว่า 305 00:13:05,340 --> 00:13:10,720 แต่ถ้าเราตีถัดไปแล้วเรา และพยายามที่สำคัญพิมพ์ก็สาม 306 00:13:10,720 --> 00:13:11,710 >> ทุกคนเห็นว่า? 307 00:13:11,710 --> 00:13:13,780 ดังนั้นถ้าคุณได้รับสิ่งที่ ที่คุณต้องการรอ 308 00:13:13,780 --> 00:13:15,540 นี้จะสมบูรณ์ ผิดและผมไม่ทราบว่า 309 00:13:15,540 --> 00:13:20,150 วิธีนี้จะเกิดขึ้นเพราะทั้งหมดที่ฉันต้องการ ทำคือการกำหนดหมายเลขตัวแปร, 310 00:13:20,150 --> 00:13:22,900 พยายามตีต่อไปให้ลองพิมพ์ มันอีกครั้งและดูว่าที่ทำงาน 311 00:13:22,900 --> 00:13:27,830 เพราะมันเป็นเพียงจะดำเนินการและ จริงกำหนดอะไรบางอย่างหลังจากที่คุณ 312 00:13:27,830 --> 00:13:29,340 ตีต่อไป 313 00:13:29,340 --> 00:13:30,336 ทำให้ความรู้สึกที่ทุกคนหรือไม่ 314 00:13:30,336 --> 00:13:30,836 Uh huh? 315 00:13:30,836 --> 00:13:33,220 >> ลำโพง 2: เมื่อคุณสุ่ม หมายเลขสิ่งที่หมายความว่า? 316 00:13:33,220 --> 00:13:34,790 >> ลำโพง 1: มันเป็นเพียงแค่การสุ่ม 317 00:13:34,790 --> 00:13:35,710 มันเป็นแค่ขยะ 318 00:13:35,710 --> 00:13:38,320 มันเป็นสิ่งเดียวที่คุณ คอมพิวเตอร์จะสุ่มกำหนด 319 00:13:38,320 --> 00:13:39,721 320 00:13:39,721 --> 00:13:40,220 เย็น 321 00:13:40,220 --> 00:13:45,760 ดังนั้นตอนนี้เราสามารถย้ายผ่านและอื่น ๆ ตอนนี้เรามี GetString ข้อความนี้ธรรมดา 322 00:13:45,760 --> 00:13:48,600 ดังนั้นให้ฉันเพียงแค่แนะนำสิ่งที่ จะเกิดขึ้นเมื่อเราตีต่อไปที่นี่ 323 00:13:48,600 --> 00:13:51,320 GDB ของเราชนิดของหายไปใช่ไหม? 324 00:13:51,320 --> 00:13:55,720 นั่นเป็นเพราะ GetString ขณะนี้การดำเนินงานใช่มั้ย? 325 00:13:55,720 --> 00:14:01,460 ดังนั้นเมื่อเราเห็นข้อความธรรมดาเท่ากับ GetString, parens เปิดและ parens, 326 00:14:01,460 --> 00:14:04,380 และเราตีต่อไปที่มี ดำเนินการจริงตอนนี้ 327 00:14:04,380 --> 00:14:06,580 ดังนั้นจึงรอ ที่เราจะมีอะไรบางอย่างเข้า 328 00:14:06,580 --> 00:14:13,560 >> ดังนั้นเราจะใส่อาหารของเราที่ เป็นสิ่งที่มันล้มเหลวที่ผมบอกคุณ 329 00:14:13,560 --> 00:14:18,020 และว่าเพียงแค่บอกว่ามันเป็น เสร็จสิ้นการดำเนินการที่ปิด 330 00:14:18,020 --> 00:14:19,980 วงเล็บหมายความว่ามัน ออกจากออกจากห่วงว่า 331 00:14:19,980 --> 00:14:21,170 332 00:14:21,170 --> 00:14:25,420 ดังนั้นเราสามารถตีต่อไปและตอนนี้เป็นฉัน แน่ใจว่าคุณทุกคนคุ้นเคยจากซีซาร์ 333 00:14:25,420 --> 00:14:27,260 นี่คือสิ่งที่บรรทัดนี้จะทำ 334 00:14:27,260 --> 00:14:32,030 มันสำหรับ Int ฉันเท่ากับ 0 ไม่มีเท่ากับ strlen ข้อความธรรมดาแล้ว 335 00:14:32,030 --> 00:14:33,960 ฉันมีค่าน้อยกว่า n ผมบวกบวก 336 00:14:33,960 --> 00:14:35,210 ห่วงจะทำเช่นนี้คืออะไร? 337 00:14:35,210 --> 00:14:37,900 338 00:14:37,900 --> 00:14:39,160 เปิดข้อความของคุณ 339 00:14:39,160 --> 00:14:39,770 เย็น 340 00:14:39,770 --> 00:14:41,330 ดังนั้นขอเริ่มต้นการทำที่ 341 00:14:41,330 --> 00:14:47,210 >> ดังนั้นควรสภาพเช่นนี้ ตรงกับที่หนึ่งครั้งแรกของเรา? 342 00:14:47,210 --> 00:14:52,250 ถ้าเป็น B มันเป็นข้อความธรรมดา I. เรา จะได้รับข้อมูลเกี่ยวกับคนในท้องถิ่นของเรา 343 00:14:52,250 --> 00:14:53,610 344 00:14:53,610 --> 00:14:57,970 ดังนั้นฉันจึงเป็นศูนย์และถ้าหกซึ่ง เราคาดหวังและที่สำคัญของเราก็คือสาม 345 00:14:57,970 --> 00:14:59,227 ทั้งหมดที่ทำให้รู้สึกใช่มั้ย? 346 00:14:59,227 --> 00:15:01,310 ตัวเลขเหล่านี้ทั้งหมด สิ่งที่พวกเขาควรจะเป็น 347 00:15:01,310 --> 00:15:02,590 348 00:15:02,590 --> 00:15:03,870 ดังนั้นครวญเพลง? 349 00:15:03,870 --> 00:15:05,620 ลำโพงที่ 3: ฉันมี ตัวเลขสุ่มสำหรับเหมือง 350 00:15:05,620 --> 00:15:09,156 351 00:15:09,156 --> 00:15:12,030 ลำโพง 1: ดีเราสามารถ check-- --we สามารถสนทนาเกี่ยวกับว่าในครั้งที่สอง 352 00:15:12,030 --> 00:15:14,110 353 00:15:14,110 --> 00:15:15,750 แต่คุณควรจะได้รับนี้ 354 00:15:15,750 --> 00:15:17,700 355 00:15:17,700 --> 00:15:20,130 ดังนั้นถ้าเรามีเงินทุน B หนึ่งครั้งแรกของเรา 356 00:15:20,130 --> 00:15:22,080 สภาพเช่นนี้ควรจะจับมันใช่มั้ย? 357 00:15:22,080 --> 00:15:27,120 ดังนั้นถ้าเราตีต่อไปเราจะเห็น ว่าหากดำเนินการจริง 358 00:15:27,120 --> 00:15:29,220 เพราะถ้าคุณกำลังต่อไปนี้ พร้อมในรหัสของคุณ 359 00:15:29,220 --> 00:15:33,460 บรรทัดนี้ที่นี่ที่ฉันข้อความธรรมดา จะถูกแทนที่ด้วยการคำนวณนี้ 360 00:15:33,460 --> 00:15:35,720 เพียง แต่ดำเนินการถ้าหาก สภาพที่เหมาะสมถูกต้องหรือไม่ 361 00:15:35,720 --> 00:15:36,905 362 00:15:36,905 --> 00:15:40,240 >> GDB เป็นเพียงจะแสดงให้คุณ สิ่งที่เป็นจริงการดำเนินการ 363 00:15:40,240 --> 00:15:45,140 ดังนั้นถ้าหากสภาพนี้ไม่ได้พบมัน ก็จะข้ามไปยังบรรทัดถัดไป 364 00:15:45,140 --> 00:15:46,540 OK? 365 00:15:46,540 --> 00:15:48,510 ดังนั้นเรามีว่า 366 00:15:48,510 --> 00:15:51,171 วงเล็บนี้หมายความว่า ปิดออกจากห่วงว่าตอนนี้ 367 00:15:51,171 --> 00:15:52,420 ดังนั้นมันจะเริ่มต้นอีกครั้ง 368 00:15:52,420 --> 00:15:54,760 369 00:15:54,760 --> 00:15:56,280 เช่นเดียวกับที่ 370 00:15:56,280 --> 00:15:59,120 เพื่อที่เราจะได้รับข้อมูล เกี่ยวกับชาวบ้านของเราที่นี่ 371 00:15:59,120 --> 00:16:02,575 และเราเห็นว่าครั้งแรกของเรา ตัวอักษรที่มีการเปลี่ยนแปลงใช่มั้ย? 372 00:16:02,575 --> 00:16:05,150 ก็ตอนนี้ E ตามที่มันควรจะเป็น 373 00:16:05,150 --> 00:16:07,360 ดังนั้นเราสามารถดำเนินการต่อไป 374 00:16:07,360 --> 00:16:08,500 >> และเรามีการตรวจสอบนี้ 375 00:16:08,500 --> 00:16:09,916 และการตรวจสอบนี้ควรจะทำงานใช่มั้ย? 376 00:16:09,916 --> 00:16:12,570 มัน A. มันควรจะเปลี่ยน ตัวอักษรสามตัวไปข้างหน้า 377 00:16:12,570 --> 00:16:14,320 378 00:16:14,320 --> 00:16:16,530 แต่ถ้าคุณสังเกตเห็นเรา ได้รับสิ่งที่แตกต่างกัน 379 00:16:16,530 --> 00:16:17,580 380 00:16:17,580 --> 00:16:22,860 ดังนั้นในกรณีนี้ขึ้นที่นี่ก็ถูกจับ มันและอื่น ๆ สายนี้ดำเนินการ 381 00:16:22,860 --> 00:16:28,620 ซึ่งการปรับเปลี่ยนของเรา B. แต่ในกรณีนี้ที่นี่ 382 00:16:28,620 --> 00:16:32,860 เรามีก็แค่ข้ามมัน และเดินไปที่ [? L Siff ?] 383 00:16:32,860 --> 00:16:34,660 ดังนั้นสิ่งที่เกิดขึ้นที่นั่น 384 00:16:34,660 --> 00:16:37,780 อะไรที่บอกคุณคือว่า เรารู้ว่ามันควรจะจับนี่ 385 00:16:37,780 --> 00:16:39,200 แต่มันก็ไม่ได้ 386 00:16:39,200 --> 00:16:42,210 ทุกคนสามารถมองเห็นสิ่งที่เรา ปัญหาอยู่ในบรรทัดที่? 387 00:16:42,210 --> 00:16:45,380 388 00:16:45,380 --> 00:16:46,969 มันเป็นสิ่งที่มากนาที 389 00:16:46,969 --> 00:16:48,510 และคุณยังสามารถดูรหัสของคุณ 390 00:16:48,510 --> 00:16:49,980 391 00:16:49,980 --> 00:16:54,940 นอกจากนี้ยัง line-- ลืมสิ่งที่มันเป็นเส้น ในตรงนี้ แต่มันอยู่ใน [ไม่ได้ยิน] 392 00:16:54,940 --> 00:16:55,480 ใช่? 393 00:16:55,480 --> 00:16:58,639 >> ลำโพง 4: มันอยู่ในที่สูงกว่า หน้าถ้าคุณอ่านมันในหนังสือเล่มนี้ 394 00:16:58,639 --> 00:16:59,430 ลำโพง 1: แน่นอน 395 00:16:59,430 --> 00:17:02,620 ดังนั้นการดีบักไม่สามารถบอกได้ คุณว่า แต่ดีบัก 396 00:17:02,620 --> 00:17:05,880 คุณจะได้รับลงไปที่บรรทัด ที่คุณรู้ว่าไม่ทำงาน 397 00:17:05,880 --> 00:17:09,319 และบางครั้งเมื่อโดยเฉพาะอย่างยิ่ง ต่อมาในภาคการศึกษาเมื่อ 398 00:17:09,319 --> 00:17:12,910 คุณจัดการกับร้อย ร้อยไม่กี่บรรทัดของรหัสและคุณ 399 00:17:12,910 --> 00:17:16,190 ไม่ทราบว่ามันล้มเหลว นี้เป็นวิธีที่ดีที่จะทำมัน 400 00:17:16,190 --> 00:17:17,900 401 00:17:17,900 --> 00:17:18,989 ดังนั้นเราจึงพบข้อบกพร่องของเรา 402 00:17:18,989 --> 00:17:21,530 คุณสามารถแก้ไขได้ในไฟล์ของคุณ และจากนั้นคุณสามารถเรียกใช้มันอีกครั้ง 403 00:17:21,530 --> 00:17:23,029 และทุกอย่างจะทำงานได้อย่างสมบูรณ์แบบ 404 00:17:23,029 --> 00:17:24,970 405 00:17:24,970 --> 00:17:30,590 และสิ่งที่ใหญ่ที่สุดคือ นี้สามารถดูเหมือน, OK 406 00:17:30,590 --> 00:17:31,090 ใช่ 407 00:17:31,090 --> 00:17:31,370 เย็น 408 00:17:31,370 --> 00:17:32,744 คุณรู้ว่าสิ่งที่คุณกำลังมองหา 409 00:17:32,744 --> 00:17:34,910 ดังนั้นคุณรู้ว่าสิ่งที่จะทำ 410 00:17:34,910 --> 00:17:39,021 >> GDB สามารถเป็นซุปเปอร์ประโยชน์เพราะคุณ สามารถพิมพ์ออกมาสิ่งเหล่านี้ทั้งหมดที่คุณ 411 00:17:39,021 --> 00:17:39,520 จะไม่ 412 00:17:39,520 --> 00:17:41,160 มันเป็นเรื่องที่มีประโยชน์มากขึ้นกว่า printf 413 00:17:41,160 --> 00:17:43,440 กี่คนที่คุณใช้ เช่นงบ printf 414 00:17:43,440 --> 00:17:46,200 จะคิดออกว่าข้อผิดพลาดเป็นใช่มั้ย? 415 00:17:46,200 --> 00:17:48,450 ดังนั้นด้วยนี้คุณทำไม่ได้ ต้องให้ไปกลับ 416 00:17:48,450 --> 00:17:51,139 และชอบแสดงความคิดเห็นใน printf หรือแสดงความคิดเห็นออกมา 417 00:17:51,139 --> 00:17:52,930 และคิดออกว่า คุณควรจะพิมพ์ 418 00:17:52,930 --> 00:17:55,670 นี้ที่จริงเพียงแค่ช่วยให้คุณสามารถ ก้าวผ่าน, พิมพ์สิ่งที่ 419 00:17:55,670 --> 00:18:00,000 ในขณะที่คุณกำลังจะผ่านเพื่อให้คุณสามารถ สังเกตว่าพวกเขาเปลี่ยนไปในเวลาจริง 420 00:18:00,000 --> 00:18:02,190 เป็นโปรแกรมของคุณกำลังทำงาน 421 00:18:02,190 --> 00:18:04,390 >> และมันจะใช้เวลาเพียงเล็กน้อย บิตของการรับใช้ 422 00:18:04,390 --> 00:18:07,850 ฉันอยากจะแนะนำเพียงชนิด ของการเป็นเล็ก ๆ น้อย ๆ ผิดหวังกับมัน 423 00:18:07,850 --> 00:18:08,930 สำหรับตอนนี้ 424 00:18:08,930 --> 00:18:13,450 ถ้าคุณใช้จ่ายชั่วโมงกว่า สัปดาห์ถัดไปเรียนรู้วิธีการใช้ GDB, 425 00:18:13,450 --> 00:18:16,140 คุณจะช่วยตัวเอง เพื่อให้เวลามากในภายหลัง 426 00:18:16,140 --> 00:18:18,750 และตัวอักษร เราบอก นี้กับคนทุกปี 427 00:18:18,750 --> 00:18:23,890 และผมจำได้ว่าเมื่อผมเอา ชั้นเรียนฉันก็ชอบฉันจะดี 428 00:18:23,890 --> 00:18:24,700 เลขที่ 429 00:18:24,700 --> 00:18:27,030 Pset 6 มาและฉันก็ เหมือนผมจะได้เรียนรู้ 430 00:18:27,030 --> 00:18:29,500 วิธีการใช้ GDB เพราะผมไม่ได้ รู้ว่าสิ่งที่เกิดขึ้นที่นี่ 431 00:18:29,500 --> 00:18:32,940 >> ดังนั้นถ้าคุณใช้เวลาเพื่อให้ ใช้ในโปรแกรมมีขนาดเล็ก 432 00:18:32,940 --> 00:18:35,697 ที่คุณกำลังจะเป็น ทำงานอยู่เหมือนการทำงาน 433 00:18:35,697 --> 00:18:37,530 ผ่านสิ่งที่ต้องการ Visionare เช่นนี้ 434 00:18:37,530 --> 00:18:38,800 435 00:18:38,800 --> 00:18:42,850 หรือถ้าคุณต้องการการปฏิบัติเป็นพิเศษผมว่า ฉันจะมากับโปรแกรมรถ, 436 00:18:42,850 --> 00:18:45,300 สำหรับคุณที่จะแก้ปัญหาหากคุณต้องการ 437 00:18:45,300 --> 00:18:49,300 >> แต่ถ้าคุณแค่ต้องใช้เวลาที่จะได้รับ ใช้มันเพียงแค่การเล่นรอบกับมัน 438 00:18:49,300 --> 00:18:50,550 จริงๆมันจะให้บริการคุณอย่างดี 439 00:18:50,550 --> 00:18:52,591 และเป็นจริงอย่างใดอย่างหนึ่ง สิ่งเหล่านั้นที่คุณเพิ่ง 440 00:18:52,591 --> 00:18:57,340 ต้องพยายามและได้รับในมือของคุณสกปรก ด้วยก่อนที่คุณจะเข้าใจจริงๆมัน 441 00:18:57,340 --> 00:19:02,090 ผมเข้าใจเพียงครั้งเดียว ผมต้องแก้ปัญหาสิ่งที่มีมัน 442 00:19:02,090 --> 00:19:08,170 และมันเป็นเรื่องดีกว่ามากที่จะมีความคิดของ วิธีการแก้ปัญหาเร็วแทนที่จะในภายหลัง 443 00:19:08,170 --> 00:19:08,850 ตกลง 444 00:19:08,850 --> 00:19:09,625 เย็น 445 00:19:09,625 --> 00:19:12,960 ฉันรู้ว่าเป็นชนิดเช่น หลักสูตรความผิดพลาดใน GDB, 446 00:19:12,960 --> 00:19:16,400 และแน่นอนผมจะทำงานที่ได้รับ เหล่านี้เพื่อดูใหญ่ครั้งต่อไป 447 00:19:16,400 --> 00:19:17,590 448 00:19:17,590 --> 00:19:18,280 เย็น 449 00:19:18,280 --> 00:19:20,390 >> ดังนั้นถ้าเรากลับไปยัง PowerPoint ของเรา 450 00:19:20,390 --> 00:19:27,194 451 00:19:27,194 --> 00:19:28,110 นี้จะเป็นในการทำงานอย่างไร 452 00:19:28,110 --> 00:19:29,711 453 00:19:29,711 --> 00:19:30,210 AWH 454 00:19:30,210 --> 00:19:31,101 ใช่ 455 00:19:31,101 --> 00:19:31,600 ตกลง 456 00:19:31,600 --> 00:19:35,480 ดังนั้นถ้าคุณต้องการใด ๆ ของ เหล่านั้นอีกครั้งมีรายชื่อ 457 00:19:35,480 --> 00:19:37,160 458 00:19:37,160 --> 00:19:40,830 ค้นหา Binary ดังนั้นทุกคนที่ จำได้ว่าปรากฏการณ์ที่ดีของเดวิด 459 00:19:40,830 --> 00:19:42,259 ฉีกหนังสือโทรศัพท์ในช่วงครึ่งปี 460 00:19:42,259 --> 00:19:44,050 ฉันไม่ได้รับจริงๆ หนังสือมือถืออีกต่อไป 461 00:19:44,050 --> 00:19:46,530 เพราะชอบที่คุณทำ ได้รับหนังสือโทรศัพท์วันนี้? 462 00:19:46,530 --> 00:19:48,220 ผมไม่ทราบ 463 00:19:48,220 --> 00:19:49,840 464 00:19:49,840 --> 00:19:50,590 ค้นหาแบบไบนารี 465 00:19:50,590 --> 00:19:52,464 ไม่มีใครจำได้ วิธีการค้นหาแบบไบนารีผลงาน? 466 00:19:52,464 --> 00:19:54,380 467 00:19:54,380 --> 00:19:55,220 ทุกคนที่ทั้งหมดหรือไม่ 468 00:19:55,220 --> 00:19:56,325 ใช่? 469 00:19:56,325 --> 00:19:58,283 ลำโพงที่ 5: คุณรู้ว่า คุณมองไปที่ครึ่งหนึ่ง 470 00:19:58,283 --> 00:20:01,146 มันจะอยู่ในขึ้นอยู่กับว่า และกำจัดอีกครึ่งหนึ่ง 471 00:20:01,146 --> 00:20:01,896 >> ลำโพง 1 แน่นอน 472 00:20:01,896 --> 00:20:06,290 ดังนั้นการค้นหาไบนารีมันเป็นชนิดของเเรก --we ชอบเรียกว่าแบ่งและพิชิต 473 00:20:06,290 --> 00:20:09,170 ดังนั้นสิ่งที่คุณจะทำคือ คุณจะดูตรงกลาง 474 00:20:09,170 --> 00:20:11,990 และคุณจะเห็นว่ามันตรงกับ สิ่งที่คุณกำลังมองหา 475 00:20:11,990 --> 00:20:15,420 และถ้ามันไม่ได้แล้วคุณพยายามที่จะ คิดออกมันจะถูกทิ้งไว้ 476 00:20:15,420 --> 00:20:16,450 ครึ่งหนึ่งหรือครึ่งขวา 477 00:20:16,450 --> 00:20:19,325 ดังนั้นนี้อาจจะถ้าคุณกำลังมองหา ที่สิ่งที่ตามตัวอักษร, 478 00:20:19,325 --> 00:20:20,720 คุณจะเห็นโอ้ 479 00:20:20,720 --> 00:20:22,750 แอลลิสันไม่มาก่อนที่จะ M? 480 00:20:22,750 --> 00:20:23,250 ใช่ 481 00:20:23,250 --> 00:20:25,030 ดังนั้นเรากำลังจะไป มองไปที่ช่วงครึ่งปีแรก 482 00:20:25,030 --> 00:20:26,450 >> หรือมันอาจจะชอบกับตัวเลข 483 00:20:26,450 --> 00:20:28,830 สิ่งที่คุณสามารถทำได้ เปรียบเทียบก็สามารถถูกจัดเรียง 484 00:20:28,830 --> 00:20:29,920 485 00:20:29,920 --> 00:20:31,260 คุณสามารถใช้การค้นหาในไบนารี 486 00:20:31,260 --> 00:20:32,340 487 00:20:32,340 --> 00:20:37,455 ดังนั้นใครจำนี้ กราฟหรือนี่คืออะไร? 488 00:20:37,455 --> 00:20:39,520 มันเป็นความซับซ้อนเชิงเส้นกำกับ 489 00:20:39,520 --> 00:20:42,830 ดังนั้นกราฟนี้เพียง อธิบายว่ามันยาว 490 00:20:42,830 --> 00:20:46,230 จะพาคุณไปแก้ปัญหาโดย คุณจะเพิ่มจำนวนของสิ่ง 491 00:20:46,230 --> 00:20:47,090 ที่คุณกำลังใช้ 492 00:20:47,090 --> 00:20:51,260 >> ดังนั้นเรามี n ซึ่งคือเส้นเวลา 493 00:20:51,260 --> 00:20:54,560 ถ้าไม่มีสองซึ่งเป็นเล็กน้อย ดีกว่ายังคงเติบโตได้อย่างรวดเร็ว 494 00:20:54,560 --> 00:20:58,360 และจากนั้นเราได้เข้าสู่ระบบซึ่งเป็น สิ่งที่เราพิจารณาค้นหาไบนารี 495 00:20:58,360 --> 00:21:03,630 ถ้าเราสังเกตเห็นว่าเป็นปัญหาของคุณ รับมากและมีขนาดใหญ่, 496 00:21:03,630 --> 00:21:06,600 เวลาที่คุณจะแก้ปัญหาได้ ไม่จริงเพิ่มขึ้นมากว่า 497 00:21:06,600 --> 00:21:09,010 มันก็เหมือนกับการเปรียบ ที่นี่ในการเริ่มต้น 498 00:21:09,010 --> 00:21:10,060 คุณชอบ, OK 499 00:21:10,060 --> 00:21:13,000 อะไรที่นี่ไม่ได้จริงๆ เรื่องที่หนึ่งที่เราใช้ 500 00:21:13,000 --> 00:21:16,220 แต่คุณจะได้รับออกไปล้านพันล้าน 501 00:21:16,220 --> 00:21:20,010 คุณกำลังพยายามที่จะหา --you're some-- พยายามที่จะหาเข็มในกองหญ้า 502 00:21:20,010 --> 00:21:21,550 >> ฉันคิดว่าคุณต้องการให้ปัญหานี้ 503 00:21:21,550 --> 00:21:25,850 คุณต้องการความซับซ้อนนี้ไม่ เชิงเส้นเพราะทั้งหมดที่คุณ 504 00:21:25,850 --> 00:21:30,049 จะรู้ว่าคุณได้รับการค้นหาผ่าน แต่ละเข็มแต่ละสิ่งที่แห้ง 505 00:21:30,049 --> 00:21:31,340 พยายามที่จะมองหาเข็มของคุณ 506 00:21:31,340 --> 00:21:34,730 และที่ไม่สนุกเกินไปในความคิดของฉัน 507 00:21:34,730 --> 00:21:35,500 ฉันชอบอย่างรวดเร็ว 508 00:21:35,500 --> 00:21:36,620 ฉันชอบที่มีประสิทธิภาพ 509 00:21:36,620 --> 00:21:40,450 และนักศึกษาที่ทำงานหนักในขณะที่คุณ คนที่คุณรู้ว่าทำงานอย่างชาญฉลาด 510 00:21:40,450 --> 00:21:43,010 ไม่ได้เป็นสิ่งที่ยากชนิดวิธีที่คุณ สามารถทำขึ้นกลไกเหล่านี้ 511 00:21:43,010 --> 00:21:45,110 512 00:21:45,110 --> 00:21:47,910 >> ดังนั้นเรากำลังจะเดินไป ผ่านเพียงตัวอย่างรวดเร็ว 513 00:21:47,910 --> 00:21:51,090 ผมคิดว่าพวกคุณควรจะมี มือในการค้นหา Binary, 514 00:21:51,090 --> 00:21:54,352 แต่ในกรณีที่คนเป็นเพียงเล็กน้อย เลือนต้องการที่จะเสริมสร้างความมัน 515 00:21:54,352 --> 00:21:56,310 เรากำลังจะไปก็ไป ผ่านตัวอย่างที่นี่ 516 00:21:56,310 --> 00:21:59,490 ดังนั้นเรากำลังมองหาว่า อาร์เรย์ประกอบด้วยเจ็ด 517 00:21:59,490 --> 00:22:00,540 518 00:22:00,540 --> 00:22:06,010 >> ดังนั้นสิ่งแรกที่เราทำคือ มองอยู่ตรงกลางใช่มั้ย? 519 00:22:06,010 --> 00:22:09,340 และยังให้คุณกำลังจะได้รับการเข้ารหัส ค้นหาไบนารีในเวลาเพียงสอง 520 00:22:09,340 --> 00:22:11,310 ดังนั้นมันจะเป็นเรื่องสนุก 521 00:22:11,310 --> 00:22:13,710 ดังนั้นเราจึงมองใน อาร์เรย์เล็ก ๆ น้อย ๆ ตรงกลาง 3 522 00:22:13,710 --> 00:22:15,501 ไม่ 3 เท่ากับ 7? 523 00:22:15,501 --> 00:22:16,000 ไม่ 524 00:22:16,000 --> 00:22:18,670 525 00:22:18,670 --> 00:22:19,550 มันหก 526 00:22:19,550 --> 00:22:21,480 ดังนั้นมันน้อยกว่า หรือมากกว่าเจ็ด? 527 00:22:21,480 --> 00:22:23,080 528 00:22:23,080 --> 00:22:23,960 ต่ำกว่า 529 00:22:23,960 --> 00:22:24,570 ใช่ 530 00:22:24,570 --> 00:22:25,170 คนงานที่ดี 531 00:22:25,170 --> 00:22:25,569 532 00:22:25,569 --> 00:22:27,360 ผมรู้สึกว่าผมชอบที่ควร มีขนมเพราะผม 533 00:22:27,360 --> 00:22:29,460 ต้องการที่จะโยนมันออกไปในหลา 534 00:22:29,460 --> 00:22:30,270 มันเป็นสิ่งที่ฉันกำลังจะทำในสัปดาห์หน้า 535 00:22:30,270 --> 00:22:31,436 มันจะทำให้พวกคุณคมชัด 536 00:22:31,436 --> 00:22:32,560 537 00:22:32,560 --> 00:22:34,690 >> ดังนั้นเราโยนออกไปว่า ครึ่งแรกใช่มั้ย? 538 00:22:34,690 --> 00:22:35,670 มันก็น้อยกว่า 539 00:22:35,670 --> 00:22:39,325 เรารู้ว่าทุกอย่างที่ ด้านซ้ายมือที่ 540 00:22:39,325 --> 00:22:41,700 เป็นไปได้น้อยกว่าสิ่งที่ เรากำลังมองหาจริง 541 00:22:41,700 --> 00:22:43,491 ดังนั้นมีความจำเป็นที่จะต้องไม่มี ให้ความสนใจกับมัน 542 00:22:43,491 --> 00:22:45,120 เพียงแค่ลืมเกี่ยวกับมัน 543 00:22:45,120 --> 00:22:48,720 ดังนั้นตอนนี้เรามองไปที่ด้านขวามือของเรา และเรามองไปที่ตรงกลางที่นั่น 544 00:22:48,720 --> 00:22:50,510 และตอนนี้ก็เก้า 545 00:22:50,510 --> 00:22:55,510 ดังนั้น 9 เท่าไหร่ --Everyone? 546 00:22:55,510 --> 00:22:57,470 มากกว่าสิ่งที่เรากำลัง มองหาใช่ไหม? 547 00:22:57,470 --> 00:22:59,860 ดังนั้นเรากำลังจะโยน ไปทุกอย่างไปทางขวา 548 00:22:59,860 --> 00:23:00,970 549 00:23:00,970 --> 00:23:01,940 เช่นนั้น 550 00:23:01,940 --> 00:23:03,700 ตอนนี้ทั้งหมดที่เรากำลังเหลือเป็นหนึ่ง 551 00:23:03,700 --> 00:23:07,760 ดังนั้นเราตรวจสอบเป็นหนึ่งในสิ่งที่ เรากำลังมองหา? มันเป็น 552 00:23:07,760 --> 00:23:08,970 เราพบสิ่งที่เราต้องการ 553 00:23:08,970 --> 00:23:10,440 554 00:23:10,440 --> 00:23:11,690 ดังนั้นเราจึงดำเนินการเสร็จแล้ว 555 00:23:11,690 --> 00:23:12,550 ค้นหา bilinear 556 00:23:12,550 --> 00:23:15,740 >> และถ้าคุณสังเกตเห็นเรา มีปัจจัยการผลิตที่มีเจ็ด 557 00:23:15,740 --> 00:23:24,320 มันแค่เราเหมือนสามครั้ง แต่ถ้าคุณทำเช่นพันล้าน 558 00:23:24,320 --> 00:23:28,190 พวกคุณรู้ว่ามีหลายขั้นตอนมันจะ ใช้เวลาถ้าเรามีสี่พันล้านสิ่ง? 559 00:23:28,190 --> 00:23:29,940 560 00:23:29,940 --> 00:23:30,455 คาดเดาใด? 561 00:23:30,455 --> 00:23:32,286 562 00:23:32,286 --> 00:23:33,960 มันเป็น 32 563 00:23:33,960 --> 00:23:37,110 32 ขั้นตอนที่จะหาบางสิ่งบางอย่าง ในสี่พันล้าน 564 00:23:37,110 --> 00:23:39,650 อาร์เรย์องค์ประกอบเพราะอำนาจของทั้งสอง 565 00:23:39,650 --> 00:23:43,550 ดังนั้นที่สองคือ 32 คือการสี่พันล้าน 566 00:23:43,550 --> 00:23:50,430 >> ดังนั้นบ้าสวยวิธีการที่คุณยังคงอยู่ภายใน เช่นจำนวนน้อยอย่างเป็นธรรมตามขั้นตอน 567 00:23:50,430 --> 00:23:52,650 ที่จะหาอะไรบางอย่างใน สี่พันล้านองค์ประกอบ 568 00:23:52,650 --> 00:23:55,730 ดังนั้นเมื่อทราบว่าเราไม่ จะรหัสนี้ 569 00:23:55,730 --> 00:23:58,950 ดังนั้นพวกคุณสามารถจริง ชนิดของเห็นวิธีการทำงานนี้ 570 00:23:58,950 --> 00:24:01,520 ขวาทั้งหมดดังนั้นพวกคุณสามารถรหัส 571 00:24:01,520 --> 00:24:04,100 ฉันจะให้พวกคุณ พูดคุยนิด ๆ หน่อย ๆ 572 00:24:04,100 --> 00:24:07,970 ได้รับรู้ว่าคนรอบตัวคุณซึ่งเป็น สิ่งที่คนต้องการจากส่วนสุดท้าย 573 00:24:07,970 --> 00:24:10,280 >> เพื่อให้ได้รับรู้ว่าคนรอบตัวคุณ 574 00:24:10,280 --> 00:24:11,305 พูดคุยนิด ๆ หน่อย ๆ 575 00:24:11,305 --> 00:24:12,580 576 00:24:12,580 --> 00:24:15,730 และทั้งหมดที่ฉันต้องการจากคุณ คนตอนนี้เป็นเพียง 577 00:24:15,730 --> 00:24:17,575 พยายามที่จะสร้างโครงร่างของ pseudocode 578 00:24:17,575 --> 00:24:18,075 OK? 579 00:24:18,075 --> 00:24:20,825 580 00:24:20,825 --> 00:24:21,325 โอ้ววว 581 00:24:21,325 --> 00:24:23,320 582 00:24:23,320 --> 00:24:29,520 ทั้งหมดที่ฉันต้องการจากพวกคุณเป็นคุณ เพียงแค่จะไปเติมในกรณีที่ในขณะนี้ 583 00:24:29,520 --> 00:24:32,170 ดังนั้นผมจึงได้ตั้งบนเหล่านี้ และขอบเขตที่ต่ำกว่าที่ 584 00:24:32,170 --> 00:24:35,250 เป็นตัวแทนของการเริ่มต้น และจุดสิ้นสุดของอาเรย์ของเรา 585 00:24:35,250 --> 00:24:40,440 และคุณจะไปจริง ห่วงผ่านและคิดออก 586 00:24:40,440 --> 00:24:42,470 สิ่งที่เรากำลังทำอยู่ในห่วงขณะนี้ 587 00:24:42,470 --> 00:24:45,810 >> ดังนั้นถ้าคุณสามารถคิดแทนดูฉันมี คำแนะนำตรงนี้สิ่งที่เป็นกรณี 588 00:24:45,810 --> 00:24:46,640 ที่เรามีที่นี่? 589 00:24:46,640 --> 00:24:48,100 590 00:24:48,100 --> 00:24:51,560 ดังนั้นหากคุณต้องการที่จะคิดออก กรณีเราจะ pseudocode เหล่านั้น 591 00:24:51,560 --> 00:24:53,350 และจากนั้นเราก็จะได้รหัสพวกเขา 592 00:24:53,350 --> 00:24:55,330 และมันจะเป็นผม คิดหวังว่ามันจะ 593 00:24:55,330 --> 00:24:56,788 จะง่ายขึ้นเล็กน้อยกว่าที่คุณคาดหวัง 594 00:24:56,788 --> 00:24:57,554 595 00:24:57,554 --> 00:25:00,220 เพราะมันไม่ได้รหัสมากว่า จริงซึ่งเป็นเย็นจริงๆ 596 00:25:00,220 --> 00:25:34,110 597 00:25:34,110 --> 00:25:35,018 >> MM-HM? 598 00:25:35,018 --> 00:25:35,893 >> นักเรียน: [ไม่ได้ยิน] 599 00:25:35,893 --> 00:25:36,984 600 00:25:36,984 --> 00:25:37,650 ผู้สอน: ใช่ 601 00:25:37,650 --> 00:25:38,595 มีบางอย่างที่เป็น ที่จะหาที่อยู่ตรงกลาง 602 00:25:38,595 --> 00:25:39,552 >> นักศึกษา: ดังนั้นเราจึงสามารถใช้ที่ 603 00:25:39,552 --> 00:25:39,770 ตกลง 604 00:25:39,770 --> 00:25:40,603 >> ผู้สอน: ที่สมบูรณ์แบบ 605 00:25:40,603 --> 00:25:42,950 นั่นคือสิ่งแรกที่เราต้องทำ 606 00:25:42,950 --> 00:25:44,330 เพื่อหาตรงกลาง 607 00:25:44,330 --> 00:25:45,415 608 00:25:45,415 --> 00:25:45,915 ที่ดี 609 00:25:45,915 --> 00:25:47,770 610 00:25:47,770 --> 00:25:55,010 ดังนั้นคุณจะมีความคิดของวิธีการที่เราอาจจะ จริงหาตรงกลางที่มีรหัส? 611 00:25:55,010 --> 00:25:55,980 >> นักเรียน: ใช่ 612 00:25:55,980 --> 00:25:57,000 n กว่า 2 หรือไม่? 613 00:25:57,000 --> 00:25:58,500 614 00:25:58,500 --> 00:25:59,500 ผู้สอน: ดังนั้น n กว่า 2 615 00:25:59,500 --> 00:26:05,170 ดังนั้นสิ่งหนึ่งที่จำได้ว่า การเปลี่ยนแปลงบนและขอบเขตล่างของคุณ 616 00:26:05,170 --> 00:26:08,110 เราให้หดส่วนหนึ่ง ของอาร์เรย์ที่เรากำลังมองหา 617 00:26:08,110 --> 00:26:11,970 ดังนั้น n 2 จะทำงานเฉพาะ สำหรับสิ่งแรกที่เราทำ 618 00:26:11,970 --> 00:26:17,810 ดังนั้นการบนและล่างเข้าบัญชี วิธีการที่เราอาจได้รับธาตุกลางที่? 619 00:26:17,810 --> 00:26:20,640 เพราะเราต้องการตรงกลาง ระหว่างบนและล่างขวา? 620 00:26:20,640 --> 00:26:21,730 621 00:26:21,730 --> 00:26:22,494 MM-HM? 622 00:26:22,494 --> 00:26:23,369 >> นักเรียน: [ไม่ได้ยิน] 623 00:26:23,369 --> 00:26:26,170 624 00:26:26,170 --> 00:26:28,080 >> ผู้สอน: ดังนั้นเราจึงมีบางกลาง 625 00:26:28,080 --> 00:26:32,730 และมันจะเป็นบนบวกต่ำกว่า 2 626 00:26:32,730 --> 00:26:34,740 627 00:26:34,740 --> 00:26:35,690 น่ากลัว 628 00:26:35,690 --> 00:26:36,570 มีที่เราจะไป 629 00:26:36,570 --> 00:26:37,280 หนึ่งบรรทัดลง 630 00:26:37,280 --> 00:26:38,560 พวกคุณอยู่ในทางของคุณ 631 00:26:38,560 --> 00:26:41,400 ดังนั้นขณะนี้ที่เรามีของเรา กลางสิ่งที่เราต้องการจะทำอย่างไร? 632 00:26:41,400 --> 00:26:45,050 633 00:26:45,050 --> 00:26:45,900 เพียงในทั่วไป 634 00:26:45,900 --> 00:26:47,734 คุณจะได้ไม่ต้องรหัสมัน 635 00:26:47,734 --> 00:26:48,335 ใช่ 636 00:26:48,335 --> 00:26:49,210 นักเรียน: [ไม่ได้ยิน] 637 00:26:49,210 --> 00:27:00,310 638 00:27:00,310 --> 00:27:10,310 ผู้สอน: ดังนั้นจึงเป็นบวกเพราะคุณ หาค่าเฉลี่ยระหว่างคนทั้งสอง 639 00:27:10,310 --> 00:27:10,810 ของพวกเขา 640 00:27:10,810 --> 00:27:11,890 641 00:27:11,890 --> 00:27:17,370 ดังนั้นหากคุณคิดว่าพวกเขาเป็นชนิด ที่เพิ่มขึ้นมาจากด้านข้าง 642 00:27:17,370 --> 00:27:21,640 คิดเกี่ยวกับมันเมื่อคุณเข้าใกล้ กลางที่คุณต้องการเช่นนั้น 643 00:27:21,640 --> 00:27:27,150 ดังนั้นถ้าคุณอยู่บนด้านข้างของทั้งสอง กลางและเรามีเช่น 5 และ 7 644 00:27:27,150 --> 00:27:31,440 เมื่อคุณเพิ่มเข้าด้วยกันคุณ ได้รับ 12 คุณหารด้วย 2 คือ 6 645 00:27:31,440 --> 00:27:33,726 >> บางครั้งก็ยากที่จะ อธิบายได้ว่าทำไมที่ทำงาน 646 00:27:33,726 --> 00:27:35,600 แต่ถ้าคุณทำงานผ่าน ตัวอย่างเช่นบางครั้ง 647 00:27:35,600 --> 00:27:37,962 มันจะช่วยให้คุณคิดว่า มันควรจะเป็นบวกหรือลบ 648 00:27:37,962 --> 00:27:38,846 ใช่ 649 00:27:38,846 --> 00:27:40,830 >> นักเรียน: [ไม่ได้ยิน] ตรงกลาง 650 00:27:40,830 --> 00:27:43,950 หากพวกเขามีกรณีที่ มีจำนวนมากของตัวเลขขนาดเล็กของ 651 00:27:43,950 --> 00:27:45,860 และไม่ชอบจำนวนมากอย่างใดอย่างหนึ่ง? 652 00:27:45,860 --> 00:27:49,750 >> ผู้สอน: ดังนั้นสิ่งที่คุณต้องการ เป็นช่วงกลางของอาเรย์ 653 00:27:49,750 --> 00:27:53,010 ดังนั้นถ้าคุณมีพวงของตัวเลขเล็ก ๆ แล้วจำนวนมากจริงๆ 654 00:27:53,010 --> 00:27:54,799 ในท้ายที่สุดมันไม่สำคัญ 655 00:27:54,799 --> 00:27:56,840 ทุกเรื่องที่เป็นที่ พวกเขากำลังค้นหาคุณเพียงแค่ 656 00:27:56,840 --> 00:27:59,339 ต้องการที่จะมองไปที่ตรงกลางของ อาร์เรย์เพราะคุณยังคง 657 00:27:59,339 --> 00:28:00,700 หั่นปัญหาของคุณได้ในช่วงครึ่งปี 658 00:28:00,700 --> 00:28:03,020 659 00:28:03,020 --> 00:28:03,680 เย็น 660 00:28:03,680 --> 00:28:06,430 ดังนั้นขณะนี้ที่เรามี กลางสิ่งที่เราจะทำต่อไปหรือไม่ 661 00:28:06,430 --> 00:28:07,150 >> นักเรียนเปรียบเทียบ 662 00:28:07,150 --> 00:28:08,150 ผู้สอน: เปรียบเทียบ 663 00:28:08,150 --> 00:28:11,670 เพื่อเปรียบเทียบกลางถึง value_wanted 664 00:28:11,670 --> 00:28:14,300 665 00:28:14,300 --> 00:28:15,160 เย็น 666 00:28:15,160 --> 00:28:17,950 ดังนั้นคุณจะเห็นได้ที่นี่เรามี ค่าที่เราต้องการได้ที่นี่ 667 00:28:17,950 --> 00:28:22,012 668 00:28:22,012 --> 00:28:23,095 โปรดจำไว้ว่านี้เป็นแถว 669 00:28:23,095 --> 00:28:24,100 670 00:28:24,100 --> 00:28:26,970 ดังนั้นตรงกลางหมายถึงดัชนี 671 00:28:26,970 --> 00:28:29,785 ดังนั้นเราจึงต้องการที่จะทำค่ากลาง 672 00:28:29,785 --> 00:28:32,380 673 00:28:32,380 --> 00:28:35,650 อย่าลืมถ้าคุณต้องการ เพื่อเปรียบเทียบเท่ากับสอง 674 00:28:35,650 --> 00:28:38,250 คุณทำเช่นเดียวเท่ากับคุณ เพิ่งจะเปลี่ยนมัน, 675 00:28:38,250 --> 00:28:41,090 และแล้วแน่นอนมันเป็น จะเป็นค่าที่คุณต้องการ 676 00:28:41,090 --> 00:28:42,300 ดังนั้นอย่าทำอย่างนั้น 677 00:28:42,300 --> 00:28:44,350 >> ดังนั้นเราจะดูว่า ค่าที่อยู่ตรงกลาง 678 00:28:44,350 --> 00:28:46,460 เท่ากับค่าที่เราต้องการ 679 00:28:46,460 --> 00:28:47,749 680 00:28:47,749 --> 00:28:48,790 อย่าลืมวงเล็บของคุณ 681 00:28:48,790 --> 00:28:50,520 682 00:28:50,520 --> 00:28:52,235 Dropbox ควรจะหายไป 683 00:28:52,235 --> 00:28:54,140 684 00:28:54,140 --> 00:28:56,200 ดังนั้นเราจะทำอย่างไรในกรณีนี้? 685 00:28:56,200 --> 00:28:59,360 ถ้ามันเป็นสิ่งที่เราต้องการที่จะกลับมา? 686 00:28:59,360 --> 00:29:01,510 687 00:29:01,510 --> 00:29:02,626 เรากำลังพยายามที่จะบอกว่า 688 00:29:02,626 --> 00:29:03,440 >> นักเรียน: พิมพ์ออก 689 00:29:03,440 --> 00:29:05,314 >> ผู้สอน: ดีเรา ไม่ต้องการที่จะพิมพ์ออก 690 00:29:05,314 --> 00:29:08,220 ดังนั้นนี่คือบูลที่นี่ดังนั้นเรา ต้องการที่จะกลับมาจริงหรือเท็จ 691 00:29:08,220 --> 00:29:12,280 เรากำลังพูดถึงก็คือจำนวนนี้ [? RRA? ?] ดังนั้นถ้ามันเป็น 692 00:29:12,280 --> 00:29:13,788 เราก็กลับมามันเป็นความจริง 693 00:29:13,788 --> 00:29:16,780 694 00:29:16,780 --> 00:29:17,760 ถ้าผมสามารถสะกดความจริง 695 00:29:17,760 --> 00:29:18,830 696 00:29:18,830 --> 00:29:20,805 >> นักเรียน: ทำไมคุณจะไม่กลับเป็นศูนย์? 697 00:29:20,805 --> 00:29:22,930 ผู้สอน: เพื่อให้คุณสามารถ กลับเป็นศูนย์หากคุณต้องการ 698 00:29:22,930 --> 00:29:26,780 แต่ในกรณีนี้เพราะ ฟังก์ชั่นของเรากลับมาบูล, 699 00:29:26,780 --> 00:29:28,962 เราต้องการที่จะกลับมาจริงหรือเท็จ 700 00:29:28,962 --> 00:29:30,920 นักเรียน: เมื่อคุณอยู่ กล่าวว่าการแสดงออกของบูลีน 701 00:29:30,920 --> 00:29:33,450 คุณสามารถตั้งค่าเท่ากับเท็จ? 702 00:29:33,450 --> 00:29:39,860 เช่นถ้าผมอยากจะบอกว่าถ้าสภาพนี้ ไม่เป็นไปตามที่ต้องการได้บนเท่ากับเท็จ 703 00:29:39,860 --> 00:29:42,332 ก็จะเข้าใจถ้าคุณเพียง ใส่ที่ผิดพลาดในด้านอื่น ๆ ได้หรือไม่? 704 00:29:42,332 --> 00:29:43,040 ผู้สอน: ใช่ 705 00:29:43,040 --> 00:29:44,820 ดังนั้นจริง ๆ แล้วถ้าคุณอยู่ เคยทำอะไรบางอย่าง 706 00:29:44,820 --> 00:29:49,600 เหมือนเป็นบนหรือต่ำ ที่ส่งกลับจริงหรือเท็จ 707 00:29:49,600 --> 00:29:53,850 และเป็นรูปแบบที่ไม่ดีจริง พูดเท่ากับเท่ากับจริงหรือเท่ากับ 708 00:29:53,850 --> 00:29:54,840 เท่ากับเท็จ 709 00:29:54,840 --> 00:30:00,210 คุณต้องการที่จะใช้ผลที่ ขณะที่ตัวเองเป็นเช็คของคุณ 710 00:30:00,210 --> 00:30:04,720 711 00:30:04,720 --> 00:30:05,860 ไม่ได้สิ่งที่ฉันต้องการ 712 00:30:05,860 --> 00:30:08,150 713 00:30:08,150 --> 00:30:09,240 นั่นคือสิ่งที่ฉันต้องการ 714 00:30:09,240 --> 00:30:13,205 ดังนั้นในกรณีที่คุณกำลังขอ เกี่ยวกับสิ่งที่ต้องการบันทึกใน C 715 00:30:13,205 --> 00:30:16,320 716 00:30:16,320 --> 00:30:25,150 >> ดังนั้นถ้าเรามีหลัก int (void) และบางสิ่งบางอย่างเช่นนี้ 717 00:30:25,150 --> 00:30:31,922 และคุณมีถ้าเป็นบน การป้อนข้อมูลบางอย่างและคุณ 718 00:30:31,922 --> 00:30:33,630 ถามว่าคุณสามารถทำ บางอย่างเช่นนี้หรือไม่? 719 00:30:33,630 --> 00:30:35,010 720 00:30:35,010 --> 00:30:35,679 ใช่มั้ย? 721 00:30:35,679 --> 00:30:37,470 นักเรียน: ผมพยายาม ที่จะทำมัน [ไม่ได้ยิน] 722 00:30:37,470 --> 00:30:38,450 เพราะถ้า it's-- 723 00:30:38,450 --> 00:30:39,200 ผู้สอน: ขวา 724 00:30:39,200 --> 00:30:41,197 ดังนั้นคุณจึงอยากให้เรื่องนี้เป็นเท็จใช่มั้ย? 725 00:30:41,197 --> 00:30:41,780 นักเรียน: ใช่ 726 00:30:41,780 --> 00:30:45,960 ผู้สอน: ดังนั้นในกรณีนี้คุณ ต้องการที่จะดำเนินการถ้ามันไม่เป็นความจริง 727 00:30:45,960 --> 00:30:50,510 ดังนั้นสิ่งดีๆที่คุณทำมีนี้ 728 00:30:50,510 --> 00:30:52,900 729 00:30:52,900 --> 00:30:55,650 ดังนั้นจำอัศเจรีย์ จุดขัดแย้งสิ่ง? 730 00:30:55,650 --> 00:30:58,270 มันบอกว่า [ไม่ได้ยิน] หมายความว่าไม่ 731 00:30:58,270 --> 00:31:03,590 ดังนั้นหากเรามองไปที่เพียงแค่ ส่วนที่นี่คุณต้องการ 732 00:31:03,590 --> 00:31:05,740 บอกว่าประเมิน เป็นเท็จที่คุณต้องการให้ 733 00:31:05,740 --> 00:31:06,790 734 00:31:06,790 --> 00:31:09,880 ไม่เท็จเป็นความจริงที่ หมายความว่าเรื่องนี้จะดำเนินการ 735 00:31:09,880 --> 00:31:11,037 ที่ทำให้รู้สึก? 736 00:31:11,037 --> 00:31:11,620 นักเรียน: ใช่ 737 00:31:11,620 --> 00:31:12,453 ผู้สอน: เจ๋ง 738 00:31:12,453 --> 00:31:13,800 739 00:31:13,800 --> 00:31:14,300 ตกลง 740 00:31:14,300 --> 00:31:16,330 ดังนั้นเราก็จะกลับมา ความจริงในกรณีนี้ 741 00:31:16,330 --> 00:31:20,357 ดังนั้นตอนนี้เรามีสองอื่น ๆ กรณีในกรณีนี้ 742 00:31:20,357 --> 00:31:21,565 สิ่งที่สองกรณีอื่น ๆ ของเรามีอะไรบ้าง 743 00:31:21,565 --> 00:31:31,610 744 00:31:31,610 --> 00:31:32,900 ขอเพียงทำมันด้วยวิธีนี้ 745 00:31:32,900 --> 00:31:40,660 ดังนั้นขอเริ่มต้นด้วยอื่น ถ้าค่าที่อยู่ตรงกลาง 746 00:31:40,660 --> 00:31:43,230 มีค่าน้อยกว่าค่าที่เราต้องการ 747 00:31:43,230 --> 00:31:47,200 748 00:31:47,200 --> 00:31:52,020 ดังนั้นค่าของเราอยู่ตรงกลางน้อย กว่ามูลค่าที่เรากำลังมองหา 749 00:31:52,020 --> 00:31:53,765 750 00:31:53,765 --> 00:31:56,720 >> เพื่อที่ผูกพันคุณ คิดว่าเราต้องการที่จะปรับปรุง? 751 00:31:56,720 --> 00:31:57,870 752 00:31:57,870 --> 00:31:58,780 บนหรือล่าง? 753 00:31:58,780 --> 00:32:01,440 754 00:32:01,440 --> 00:32:01,940 บน? 755 00:32:01,940 --> 00:32:03,230 756 00:32:03,230 --> 00:32:06,470 ดังนั้นที่ด้านข้างของอาเรย์ เราจะไปจะมอง? 757 00:32:06,470 --> 00:32:07,500 >> นักเรียน: ต่ำ 758 00:32:07,500 --> 00:32:09,750 >> ผู้สอน: เราเรากำลังจะไป จะมองที่ด้านซ้าย 759 00:32:09,750 --> 00:32:11,120 ดังนั้นอื่นถ้าค่าน้อยน้อย 760 00:32:11,120 --> 00:32:14,730 ดังนั้นค่ากลางของคุณที่นี่ น้อยกว่าสิ่งที่เราต้องการ 761 00:32:14,730 --> 00:32:17,202 ดังนั้นเราจึงต้องการที่จะใช้ ด้านขวาของอาเรย์ของเรา 762 00:32:17,202 --> 00:32:18,910 ดังนั้นเรากำลังจะไป ปรับปรุงขอบเขตที่ต่ำของเรา 763 00:32:18,910 --> 00:32:20,210 764 00:32:20,210 --> 00:32:23,020 ดังนั้นเราจะกำหนดใหม่ของเราลดลง 765 00:32:23,020 --> 00:32:25,221 และสิ่งที่คุณคิดว่าต่ำกว่าที่ควรจะเป็น? 766 00:32:25,221 --> 00:32:26,304 นักเรียน: ค่ากลาง? 767 00:32:26,304 --> 00:32:27,446 768 00:32:27,446 --> 00:32:28,820 ผู้สอน: ดังนั้น value-- กลาง 769 00:32:28,820 --> 00:32:30,136 นักเรียน: พลัส 1 770 00:32:30,136 --> 00:32:31,010 ผู้สอน: --plus 1 771 00:32:31,010 --> 00:32:32,300 772 00:32:32,300 --> 00:32:34,380 ทุกคนสามารถบอกฉันว่าทำไม เรามีบวก 1? 773 00:32:34,380 --> 00:32:35,730 >> นักเรียน: [? ไม่มีค่า?] มากเท่ากับมัน 774 00:32:35,730 --> 00:32:36,120 >> ผู้สอน: ขวา 775 00:32:36,120 --> 00:32:38,661 เพราะเรารู้อยู่แล้วว่า ค่ากลางของเราไม่เท่ากับ 776 00:32:38,661 --> 00:32:42,750 และเราต้องการที่จะไม่รวมมัน จากการค้นหาภายหลังทั้งหมด 777 00:32:42,750 --> 00:32:46,360 ถ้าคุณลืมว่าบวก 1 นี้ จะชอบวงไปเรื่อย ๆ 778 00:32:46,360 --> 00:32:49,620 และคุณก็จะได้รับการติดอยู่ใน วง จำกัด แล้วคุณจะ Segfault 779 00:32:49,620 --> 00:32:50,370 และสิ่งที่ไม่ดี 780 00:32:50,370 --> 00:32:54,780 เสมอเพื่อให้แน่ใจว่าคุณไม่ได้ รวมทั้งค่าที่คุณเพียง 781 00:32:54,780 --> 00:32:55,380 มองไปที่ 782 00:32:55,380 --> 00:32:58,530 ดังนั้นเราจึงดูแลที่มีบวก 1 783 00:32:58,530 --> 00:33:04,840 >> ดังนั้นตอนนี้เรามีสภาพสุดท้ายของเรา ซึ่งผมเสมอเพื่อความปลอดภัย 784 00:33:04,840 --> 00:33:12,664 คุณสามารถตรวจสอบที่นี่อื่นถ้าค่าที่ ตรงกลางเป็นมากกว่าค่า 785 00:33:12,664 --> 00:33:13,163 ที่เราต้องการ 786 00:33:13,163 --> 00:33:16,260 787 00:33:16,260 --> 00:33:20,230 นั่นหมายความว่าเราต้องการ ครึ่งด้านซ้ายมือ 788 00:33:20,230 --> 00:33:21,350 789 00:33:21,350 --> 00:33:23,260 ดังนั้นเราจะเป็นที่หนึ่งจะ update? 790 00:33:23,260 --> 00:33:23,760 สูงกว่า 791 00:33:23,760 --> 00:33:25,470 792 00:33:25,470 --> 00:33:26,970 และสิ่งที่เป็นหนึ่งจะเท่ากับนี้หรือไม่? 793 00:33:26,970 --> 00:33:31,630 794 00:33:31,630 --> 00:33:33,690 กลางลบ 1 เพราะ แน่นอนเราต้องการ 795 00:33:33,690 --> 00:33:38,370 เพื่อให้แน่ใจว่าเราไม่ได้ กำลังมองหาที่ค่ากลางอีกครั้ง 796 00:33:38,370 --> 00:33:41,830 797 00:33:41,830 --> 00:33:45,110 แล้วเรามีมัน 798 00:33:45,110 --> 00:33:45,610 นั่นแหล่ะ 799 00:33:45,610 --> 00:33:46,820 นั่นคือค้นหาแบบไบนารีทั้งหมด 800 00:33:46,820 --> 00:33:48,190 มันไม่ใช่ว่าไม่ดีใช่มั้ย? 801 00:33:48,190 --> 00:33:51,590 มันก็เหมือนกับ 10 บรรทัด รหัสที่มีพื้นที่สีขาว 802 00:33:51,590 --> 00:33:57,510 ดังนั้นที่มีประสิทธิภาพมากที่มีประโยชน์มากที่คุณจะ จะใช้มันในหนึ่งใน psets ต่อมาของคุณ 803 00:33:57,510 --> 00:33:59,360 อาจจะไม่ได้อย่างใดอย่างหนึ่ง แต่ต่อมา 804 00:33:59,360 --> 00:34:00,670 เพื่อเรียนรู้มัน 805 00:34:00,670 --> 00:34:01,510 รักมัน 806 00:34:01,510 --> 00:34:02,980 ก็จะปฏิบัติต่อคุณอย่างดี 807 00:34:02,980 --> 00:34:05,370 เพื่อให้ทุกคนไม่ได้มี คำถามค้นหา binary? 808 00:34:05,370 --> 00:34:06,196 ใช่ 809 00:34:06,196 --> 00:34:09,840 >> นักเรียน: มันไม่สำคัญ ไม่ว่าจะเป็น n ของคุณได้หรือคี่? 810 00:34:09,840 --> 00:34:10,750 >> ผู้สอน: ฉบับที่ 811 00:34:10,750 --> 00:34:18,150 เพราะเราโยนไปตรงกลางเป็น int มันก็จะตัดมัน 812 00:34:18,150 --> 00:34:21,600 ดังนั้นมันจะอยู่จำนวนเต็มและจะ ในที่สุดการจัดเรียงผ่านทุกอย่าง 813 00:34:21,600 --> 00:34:23,909 ดังนั้นคุณจึงไม่ต้องกังวลเกี่ยวกับการที่ 814 00:34:23,909 --> 00:34:24,580 ทุกคนที่ดี? 815 00:34:24,580 --> 00:34:25,659 816 00:34:25,659 --> 00:34:26,850 น่ากลัว 817 00:34:26,850 --> 00:34:27,919 เย็น 818 00:34:27,919 --> 00:34:30,836 ดังนั้นพวกคุณได้รับนี้ 819 00:34:30,836 --> 00:34:33,380 820 00:34:33,380 --> 00:34:33,880 สไลด์โชว์ 821 00:34:33,880 --> 00:34:35,719 822 00:34:35,719 --> 00:34:43,270 ดังนั้นในขณะที่เรากำลังพูดถึงฉันรู้ว่า เดวิดกล่าว runtimes ซับซ้อน 823 00:34:43,270 --> 00:34:44,420 824 00:34:44,420 --> 00:34:50,340 >> ดังนั้นในกรณีที่ดีที่สุดก็เพียง หนึ่งที่เราเรียกว่าเวลาคงที่ 825 00:34:50,340 --> 00:34:51,909 ทุกคนสามารถบอกฉันว่าทำไมที่อาจจะมี? 826 00:34:51,909 --> 00:34:52,969 827 00:34:52,969 --> 00:34:55,800 สิ่งที่ประเภทของสถ​​านการณ์ที่จะมอบให้? 828 00:34:55,800 --> 00:34:58,260 829 00:34:58,260 --> 00:34:58,760 MM-HM 830 00:34:58,760 --> 00:34:59,926 >> นักเรียน: [ไม่ได้ยิน] first-- 831 00:34:59,926 --> 00:35:00,789 832 00:35:00,789 --> 00:35:03,830 ผู้สอน: ดังนั้นตรงกลางเป็น องค์ประกอบแรกที่เรามาใช่มั้ย? 833 00:35:03,830 --> 00:35:08,167 ดังนั้นทั้งอาร์เรย์ของหนึ่งหรือ สิ่งที่เรากำลังมองหาเพียงแค่ 834 00:35:08,167 --> 00:35:09,750 ที่เกิดขึ้นจะตบเบา ๆ ตีอยู่ตรงกลาง 835 00:35:09,750 --> 00:35:11,190 836 00:35:11,190 --> 00:35:13,380 เพื่อให้เป็นกรณีที่ดีที่สุดของเรา 837 00:35:13,380 --> 00:35:17,540 คุณจะได้รับเป็นปัญหาจริงอาจจะไม่ได้ ไปถึง [ไม่ได้ยิน] ที่มักจะ 838 00:35:17,540 --> 00:35:18,667 839 00:35:18,667 --> 00:35:19,750 สิ่งที่เกี่ยวกับกรณีที่เลวร้ายของเราหรือไม่ 840 00:35:19,750 --> 00:35:21,270 กรณีที่เลวร้ายที่สุดของเราคือการบันทึก n 841 00:35:21,270 --> 00:35:25,360 และที่มีจะทำอย่างไรกับทั้ง อำนาจของสองสิ่งที่ฉันพูดคุยเกี่ยวกับ 842 00:35:25,360 --> 00:35:30,930 >> ดังนั้นในกรณีที่เลวร้ายที่สุดก็จะหมายถึง ว่าเราต้องสับอาร์เรย์ลง 843 00:35:30,930 --> 00:35:33,270 จนกว่าจะเป็นองค์ประกอบหนึ่ง 844 00:35:33,270 --> 00:35:34,810 845 00:35:34,810 --> 00:35:38,930 ดังนั้นเราจึงต้องสับมันลงในช่วงครึ่งปี หลายครั้งที่เราอาจจะ 846 00:35:38,930 --> 00:35:41,430 นั่นเป็นเหตุผลที่มันเป็น n ล็อกเพราะ คุณเพียงแค่ให้หารด้วยสอง 847 00:35:41,430 --> 00:35:42,890 848 00:35:42,890 --> 00:35:45,830 ดังนั้นสมมติฐานสิ่งที่คุณ จำเป็นต้องรู้ว่าถ้าคุณเคย 849 00:35:45,830 --> 00:35:48,050 จะใช้ค้นหา binary 850 00:35:48,050 --> 00:35:50,680 องค์ประกอบของคุณจะต้องถูกจัดเรียง 851 00:35:50,680 --> 00:35:53,890 พวกเขาจะต้องถูกจัดเรียงเพราะ นั่นคือวิธีการที่คุณเพียง 852 00:35:53,890 --> 00:35:57,060 สามารถทราบว่าคุณมีความสามารถ ที่จะโยนออกครึ่งหนึ่งของมัน 853 00:35:57,060 --> 00:36:00,260 >> ถ้าคุณมีถุงคลั่งไคล้นี้ ของตัวเลขและคุณกำลังบอกว่า 854 00:36:00,260 --> 00:36:05,380 ตกลงผมจะไปตรวจสอบกลาง จำนวนและตัวเลขฉันกำลังมองหา 855 00:36:05,380 --> 00:36:08,510 น้อยกว่าที่ฉันแค่ไป ให้พลโยนออกครึ่งหนึ่ง 856 00:36:08,510 --> 00:36:11,130 คุณจะไม่ทราบว่าของคุณ ตัวเลขในอีกครึ่งหนึ่งที่ 857 00:36:11,130 --> 00:36:12,655 รายการของคุณจะต้องมีการแยก 858 00:36:12,655 --> 00:36:14,030 859 00:36:14,030 --> 00:36:16,560 เช่นกันนี้อาจเป็น ไปข้างหน้าเล็กน้อย 860 00:36:16,560 --> 00:36:18,360 แต่คุณต้องมีการเข้าถึงแบบสุ่ม 861 00:36:18,360 --> 00:36:21,940 คุณจะต้องสามารถที่จะเพียงแค่ ไปที่องค์ประกอบกลางที่ 862 00:36:21,940 --> 00:36:25,110 หากคุณมีการสำรวจ ผ่านสิ่งที่ 863 00:36:25,110 --> 00:36:28,630 หรือจะนำคุณขั้นตอนพิเศษ ที่จะได้รับไปยังองค์ประกอบกลางนั้น 864 00:36:28,630 --> 00:36:31,750 มันไม่ log n อีกต่อไปเพราะ คุณกำลังเพิ่มการทำงานมากขึ้นเป็นมัน 865 00:36:31,750 --> 00:36:34,800 และนี่จะทำให้เล็ก ๆ น้อย ๆ รู้สึกมากขึ้นในสองสัปดาห์ที่ผ่านมา 866 00:36:34,800 --> 00:36:37,950 แต่ฉันเพียงแค่ชนิดของต้องการที่จะคำนำ ให้พวกคุณคิดในสิ่งที่เป็น 867 00:36:37,950 --> 00:36:38,999 ที่จะมา 868 00:36:38,999 --> 00:36:40,790 แต่ผู้ที่มีสอง สมมติฐานที่สำคัญ 869 00:36:40,790 --> 00:36:44,804 ที่คุณต้องการสำหรับรายการไบนารี 870 00:36:44,804 --> 00:36:45,720 ให้แน่ใจว่ามันถูกจัดเรียง 871 00:36:45,720 --> 00:36:47,920 นั่นเป็นหนึ่งในที่ยิ่งใหญ่สำหรับ พวกคุณได้ในขณะนี้ 872 00:36:47,920 --> 00:36:52,170 และในวันที่เราจะได้เข้าไป ส่วนที่เหลือของทุกประเภทของเรา 873 00:36:52,170 --> 00:36:56,444 ดังนั้นสี่ฟอง sorts--, แทรกการเลือกและการรวม 874 00:36:56,444 --> 00:36:57,485 พวกเขากำลังทั้งหมดชนิดของเย็น 875 00:36:57,485 --> 00:37:02,860 ถ้าพวกคุณตัดสินใจที่จะใช้ CS 124, คุณจะได้เรียนรู้เกี่ยวกับทุกประเภทของทุกประเภท 876 00:37:02,860 --> 00:37:07,575 และถ้าคุณเป็นแฟน XKCD มี เป็นเรื่องเกี่ยวกับการ์ตูนที่เจ๋งจริงๆ 877 00:37:07,575 --> 00:37:11,530 เหมือนทุกประเภทไม่ได้ผลจริงๆซึ่งผม ขอแนะนำให้คุณไปดูที่ 878 00:37:11,530 --> 00:37:16,170 หนึ่งในนั้นคือการจัดเรียงเช่นตื่นตระหนกซึ่ง เป็นเหมือนโอ้ไม่กลับอาร์เรย์แบบสุ่ม 879 00:37:16,170 --> 00:37:16,991 ระบบปิด 880 00:37:16,991 --> 00:37:17,490 ออกจาก 881 00:37:17,490 --> 00:37:19,070 882 00:37:19,070 --> 00:37:21,500 ดังนั้นอารมณ์ขัน geeky ดีอยู่เสมอ 883 00:37:21,500 --> 00:37:22,620 884 00:37:22,620 --> 00:37:25,750 >> เพื่อให้ทุกคนไม่จำชนิด เช่นเดียวกับความคิดทั่วไป 885 00:37:25,750 --> 00:37:27,810 ของวิธีการทำงานการจัดเรียงฟอง 886 00:37:27,810 --> 00:37:31,130 887 00:37:31,130 --> 00:37:32,155 คุณจำได้ไหม? 888 00:37:32,155 --> 00:37:32,755 >> นักเรียน: ใช่ 889 00:37:32,755 --> 00:37:33,970 >> ผู้สอน: ไปมัน 890 00:37:33,970 --> 00:37:38,980 >> นักเรียน: คุณกำลังจะผ่านและ ถ้ามันใหญ่แล้วคุณสลับสอง 891 00:37:38,980 --> 00:37:39,820 >> ผู้สอน: MM-HM 892 00:37:39,820 --> 00:37:40,564 เผง 893 00:37:40,564 --> 00:37:41,730 ดังนั้นคุณก็ย้ำผ่าน 894 00:37:41,730 --> 00:37:43,050 คุณตรวจสอบตัวเลขสอง 895 00:37:43,050 --> 00:37:46,510 หากหนึ่งก่อนที่จะมีขนาดใหญ่ มากกว่าหนึ่งหลังจากนั้น, 896 00:37:46,510 --> 00:37:50,230 คุณเพียงแค่สลับพวกเขาเพื่อที่ว่าใน วิธีนี้ทั้งหมดของตัวเลขที่สูงขึ้น 897 00:37:50,230 --> 00:37:54,990 ฟองขึ้นไปทางท้ายของรายการ และทุกหมายเลขฟองลดลง 898 00:37:54,990 --> 00:37:59,355 >> เขาแสดงให้พวกคุณเย็น ผลกระทบเสียงเรียงลำดับภาพหรือไม่? 899 00:37:59,355 --> 00:38:00,480 เป็นชนิดของเย็น 900 00:38:00,480 --> 00:38:01,510 901 00:38:01,510 --> 00:38:05,200 ดังนั้นในขณะที่โรเบิร์ตเพียงแค่กล่าวว่าอัลกอริทึม ที่คุณเพิ่งก้าวผ่านรายการ 902 00:38:05,200 --> 00:38:07,930 การแลกเปลี่ยนค่าที่อยู่ติดกัน หากพวกเขาไม่ได้อยู่ในการสั่งซื้อ 903 00:38:07,930 --> 00:38:10,975 แล้วก็เก็บซ้ำ จนกว่าคุณจะไม่ได้ทำสัญญาแลกเปลี่ยนใด ๆ 904 00:38:10,975 --> 00:38:11,990 905 00:38:11,990 --> 00:38:12,740 ดังนั้นไม่ดีใช่มั้ย? 906 00:38:12,740 --> 00:38:14,080 907 00:38:14,080 --> 00:38:16,319 ดังนั้นเราก็ต้องเป็นตัวอย่างรวดเร็วที่นี่ 908 00:38:16,319 --> 00:38:18,360 ดังนั้นนี้จะจัดเรียง พวกเขาอยู่ในลำดับจากน้อยไปมาก 909 00:38:18,360 --> 00:38:19,470 910 00:38:19,470 --> 00:38:23,470 ดังนั้นเมื่อเราไปถึงครั้งแรก เวลาที่เรามองผ่านแปด 911 00:38:23,470 --> 00:38:26,880 และหกเห็นได้ชัดไม่ได้ ในการสั่งซื้อเราสลับพวกเขา 912 00:38:26,880 --> 00:38:27,985 >> ดังนั้นมองไปที่หนึ่งต่อไป 913 00:38:27,985 --> 00:38:29,430 แปดและสี่ไม่ได้อยู่ในการสั่งซื้อ 914 00:38:29,430 --> 00:38:30,450 สลับพวกเขา 915 00:38:30,450 --> 00:38:32,530 แล้วแปดสองสลับพวกเขา 916 00:38:32,530 --> 00:38:33,470 มีที่เราจะไป 917 00:38:33,470 --> 00:38:39,519 ดังนั้นหลังจากที่ผ่านครั้งแรกของคุณคุณ รู้ว่าจำนวนมากที่สุดของคุณ 918 00:38:39,519 --> 00:38:41,810 เป็นไปได้ทุกทาง ที่ด้านบนเพราะมันเป็นเพียงแค่ 919 00:38:41,810 --> 00:38:44,210 ไปได้อย่างต่อเนื่อง มีขนาดใหญ่กว่าทุกอย่างอื่น 920 00:38:44,210 --> 00:38:46,810 และมันก็แค่ไปฟอง ขึ้นไปตลอดทางจนถึงปลายมี 921 00:38:46,810 --> 00:38:48,226 ไม่ว่าทำให้ความรู้สึกที่ทุกคนหรือไม่ 922 00:38:48,226 --> 00:38:48,560 923 00:38:48,560 --> 00:38:49,060 เย็น 924 00:38:49,060 --> 00:38:51,310 925 00:38:51,310 --> 00:38:53,920 >> ดังนั้นแล้วเรามองผ่านที่สองของเรา 926 00:38:53,920 --> 00:38:54,980 หกและสี่สวิทช์ 927 00:38:54,980 --> 00:38:55,920 หกและสองสวิทช์ 928 00:38:55,920 --> 00:38:58,700 และตอนนี้เรามีเล็ก ๆ น้อย ๆ ในการสั่งซื้อ 929 00:38:58,700 --> 00:39:02,240 ดังนั้นสำหรับทุกผ่านที่เรา ทำให้ผ่านรายการทั้งหมดของเรา 930 00:39:02,240 --> 00:39:06,320 เรารู้ว่าเช่นว่าตัวเลขจำนวนมาก ในตอนท้ายจะได้รับการจัดเรียง 931 00:39:06,320 --> 00:39:07,690 932 00:39:07,690 --> 00:39:09,610 ดังนั้นที่เราทำผ่านสาม ซึ่งเป็นหนึ่งในการแลก 933 00:39:09,610 --> 00:39:10,860 934 00:39:10,860 --> 00:39:15,910 และจากนั้นในสี่ของเรา ผ่านเรามีศูนย์ช่อง 935 00:39:15,910 --> 00:39:18,570 และเพื่อให้เรารู้ว่าเรา อาเรย์ได้รับการจัดเรียง 936 00:39:18,570 --> 00:39:20,900 >> และที่มีขนาดใหญ่ สิ่งที่มีการจัดเรียงฟอง 937 00:39:20,900 --> 00:39:23,720 เรารู้ว่าเมื่อเรา มีศูนย์แลกเปลี่ยนที่ 938 00:39:23,720 --> 00:39:26,497 หมายความว่าทุกอย่างที่ อยู่ในลำดับที่สมบูรณ์ 939 00:39:26,497 --> 00:39:27,580 เป็นชนิดของวิธีการที่เราตรวจสอบ 940 00:39:27,580 --> 00:39:28,740 941 00:39:28,740 --> 00:39:36,480 ดังนั้นเรายังจะให้รหัสฟอง จัดเรียงซึ่งยังไม่ใช่ว่าไม่ดี 942 00:39:36,480 --> 00:39:38,120 ไม่มีของเหล่านี้ที่ไม่ดี 943 00:39:38,120 --> 00:39:40,210 ผมรู้ว่าพวกเขาสามารถดูเหมือนน่ากลัวนิดหน่อย 944 00:39:40,210 --> 00:39:42,124 ฉันรู้ว่าเมื่อผมเอา ชั้นแม้เมื่อฉัน 945 00:39:42,124 --> 00:39:44,290 ได้รับการเรียนการสอนในชั้นเรียน ครั้งแรกในปีที่ผ่านมา 946 00:39:44,290 --> 00:39:46,165 ฉันก็ชอบฉันจะทำเช่นนี้? 947 00:39:46,165 --> 00:39:48,540 มันทำให้รู้สึกในทฤษฎี แต่ ทำอย่างไรเราจริงทำเช่นนี้? 948 00:39:48,540 --> 00:39:51,420 ซึ่งเป็นเหตุผลที่ฉันยังต้องการที่จะเดิน รหัสผ่านกับพวกคุณมาที่นี่ 949 00:39:51,420 --> 00:39:54,915 ดังนั้นผมจึงมี pseudocode สำหรับคุณผู้ชายที่เวลานี้ 950 00:39:54,915 --> 00:39:55,950 951 00:39:55,950 --> 00:39:58,970 ดังนั้นเพียงแค่เก็บในใจเป็น เรากำลังจะเปลี่ยนไป 952 00:39:58,970 --> 00:40:04,210 ดังนั้นเราจึงมีบางอย่างที่เคาน์เตอร์ ติดตามการแลกเปลี่ยนของเรา 953 00:40:04,210 --> 00:40:08,370 เพราะเราต้องให้แน่ใจว่า ที่เรากำลังตรวจสอบว่า 954 00:40:08,370 --> 00:40:11,830 และเราย้ำอาร์เรย์ทั้งหมด ในขณะที่เราเพียงแค่ทำกับตัวอย่างนี้ 955 00:40:11,830 --> 00:40:12,900 956 00:40:12,900 --> 00:40:17,325 ถ้าองค์ประกอบก่อนที่จะมีขนาดใหญ่กว่า องค์ประกอบหลังจากที่เราอยู่ที่, 957 00:40:17,325 --> 00:40:20,760 เราสลับพวกเขาและเราเพิ่มขึ้นของเรา เคาน์เตอร์เพราะทันทีที่เราสลับ, 958 00:40:20,760 --> 00:40:23,850 เราต้องการที่จะให้เคาน์เตอร์ของเรารู้ว่า 959 00:40:23,850 --> 00:40:26,247 คำถามใด ๆ ที่นั่น? 960 00:40:26,247 --> 00:40:27,580 สิ่งที่น่าตลกกว่าที่นี่ 961 00:40:27,580 --> 00:40:29,225 962 00:40:29,225 --> 00:40:32,350 นักเรียน: คุณตั้งเคาน์เตอร์ให้เป็นศูนย์ ทุกครั้งที่คุณไปผ่านห่วง? 963 00:40:32,350 --> 00:40:34,339 คุณไม่ให้ไป กลับไปที่ศูนย์ทุกครั้งหรือไม่ 964 00:40:34,339 --> 00:40:35,505 ผู้สอน: ไม่จำเป็นต้อง 965 00:40:35,505 --> 00:40:39,710 ดังนั้นสิ่งที่เกิดขึ้นคือเราไปถึงที่นี่ 966 00:40:39,710 --> 00:40:43,830 ดังนั้นทำในขณะที่จำนี้ จะดำเนินการทันทีโดยไม่ต้องล้มเหลว 967 00:40:43,830 --> 00:40:46,480 ดังนั้นมันจะตั้ง นับเท่ากับศูนย์ 968 00:40:46,480 --> 00:40:48,070 จากนั้นมันจะย้ำผ่าน 969 00:40:48,070 --> 00:40:50,590 มัน iterates ผ่าน มันจะปรับปรุงเคาน์เตอร์ 970 00:40:50,590 --> 00:40:51,870 971 00:40:51,870 --> 00:40:56,900 ในขณะที่การปรับปรุงเคาน์เตอร์เมื่อมันทำ เมื่อมันถึงจุดสิ้นสุดของอาเรย์, 972 00:40:56,900 --> 00:41:00,830 ถ้ารายการของเราไม่ได้รับการจัดเรียง เคาน์เตอร์จะได้รับการปรับปรุง 973 00:41:00,830 --> 00:41:01,840 974 00:41:01,840 --> 00:41:07,150 >> ดังนั้นแล้วมันจะตรวจสอบสภาพและมัน กล่าวว่าตกลงเป็นเคาน์เตอร์มากกว่าศูนย์ 975 00:41:07,150 --> 00:41:09,290 ถ้าเป็นทำมันอีกครั้ง 976 00:41:09,290 --> 00:41:14,340 คุณต้องการที่จะตั้งค่าเพื่อที่ว่าเมื่อคุณ ผ่านเคาน์เตอร์เท่ากับศูนย์ 977 00:41:14,340 --> 00:41:18,240 ถ้าคุณไปผ่านที่เรียงลำดับ อาร์เรย์ไม่มีอะไรเปลี่ยนแปลง 978 00:41:18,240 --> 00:41:21,355 นี้ล้มเหลวและคุณ กลับรายการที่จัดเรียง 979 00:41:21,355 --> 00:41:23,104 980 00:41:23,104 --> 00:41:24,020 ไม่ว่าจะทำให้ความรู้สึก? 981 00:41:24,020 --> 00:41:24,940 982 00:41:24,940 --> 00:41:26,356 นักเรียน: มันอาจจะเป็นนิด ๆ หน่อย ๆ 983 00:41:26,356 --> 00:41:27,147 ผู้สอน: ตกลง 984 00:41:27,147 --> 00:41:28,980 ถ้ามีคนอื่น ๆ คำถามที่เกิดขึ้น 985 00:41:28,980 --> 00:41:30,180 986 00:41:30,180 --> 00:41:30,680 ใช่ 987 00:41:30,680 --> 00:41:33,760 >> นักเรียน: สิ่งที่จะทำงาน เป็นไปเพื่อการแลกเปลี่ยนองค์ประกอบ? 988 00:41:33,760 --> 00:41:36,900 >> ผู้สอน: ดังนั้นเราสามารถเขียน ว่าถ้าเรากำลังจะไปตอนนี้ 989 00:41:36,900 --> 00:41:37,801 990 00:41:37,801 --> 00:41:38,300 เย็น 991 00:41:38,300 --> 00:41:42,155 ดังนั้นเมื่อทราบว่าอลิสันจะ เปลี่ยนกลับไปใช้ 992 00:41:42,155 --> 00:41:43,080 มันจะเป็นเรื่องสนุก 993 00:41:43,080 --> 00:41:45,170 994 00:41:45,170 --> 00:41:47,390 และเรามีความสุขของเรา สิ่งที่จัดเรียงฟองที่นี่ 995 00:41:47,390 --> 00:41:50,800 ดังนั้นผมแล้วก็ขี่จักรยาน ผ่านแถว 996 00:41:50,800 --> 00:41:53,030 เรามีสัญญาแลกเปลี่ยนของเราที่ จะเท่ากับศูนย์ 997 00:41:53,030 --> 00:41:54,480 998 00:41:54,480 --> 00:41:58,440 ดังนั้นเราจึงต้องการที่จะเปลี่ยนที่อยู่ติดกัน องค์ประกอบหากพวกเขากำลังออกคำสั่ง 999 00:41:58,440 --> 00:42:03,020 ดังนั้นสิ่งแรกที่เราต้อง ทำคือการย้ำผ่านอาร์เรย์ของเรา 1000 00:42:03,020 --> 00:42:04,500 1001 00:42:04,500 --> 00:42:08,260 >> ดังนั้นวิธีที่คุณคิดว่าเราอาจจะ ย้ำผ่านอาร์เรย์ของเราหรือไม่ 1002 00:42:08,260 --> 00:42:09,720 1003 00:42:09,720 --> 00:42:13,990 เรามีเคล็ดลับและฉันเท่ากับ 0 1004 00:42:13,990 --> 00:42:16,950 1005 00:42:16,950 --> 00:42:22,454 เราต้องการฉันจะน้อย กว่า n ลบ 1 ลบ k 1006 00:42:22,454 --> 00:42:23,870 และฉันจะอธิบายว่าในครั้งที่สอง 1007 00:42:23,870 --> 00:42:26,280 1008 00:42:26,280 --> 00:42:32,830 ดังนั้นนี่คือการเพิ่มประสิทธิภาพที่นี่ที่ไหน จำได้ว่าผมบอกว่าทุกครั้งหลังจากผ่าน 1009 00:42:32,830 --> 00:42:36,655 เราผ่านอาร์เรย์ รู้ว่าสิ่ง on-- 1010 00:42:36,655 --> 00:42:43,590 1011 00:42:43,590 --> 00:42:46,295 >> ดังนั้นหลังจากที่หนึ่งผ่านเรา รู้ว่านี้จะถูกจัดเรียง 1012 00:42:46,295 --> 00:42:47,370 1013 00:42:47,370 --> 00:42:50,060 หลังจากผ่านไปสองเรารู้ว่า ว่าทั้งหมดนี้จะถูกจัดเรียง 1014 00:42:50,060 --> 00:42:52,750 หลังจากที่สามผ่านเรา รู้ว่าการจัดเรียง 1015 00:42:52,750 --> 00:42:55,620 ดังนั้นวิธีที่ฉันทำซ้ำ ผ่านแถวที่นี่ 1016 00:42:55,620 --> 00:43:01,090 คือมันเพื่อให้แน่ใจว่าไปเท่านั้น ผ่านสิ่งที่เรารู้คือไม่ได้เรียงลำดับ 1017 00:43:01,090 --> 00:43:01,644 OK? 1018 00:43:01,644 --> 00:43:02,810 นั่นเป็นเพียงการเพิ่มประสิทธิภาพ 1019 00:43:02,810 --> 00:43:04,430 1020 00:43:04,430 --> 00:43:08,210 คุณสามารถเขียนได้อย่างไร้เดียงสาเพียง iterating ผ่านทุกอย่าง 1021 00:43:08,210 --> 00:43:09,970 มันก็จะใช้เวลานาน 1022 00:43:09,970 --> 00:43:12,470 กับสี่วงนี้มัน เพียงแค่การเพิ่มประสิทธิภาพอย่างมีความสุข 1023 00:43:12,470 --> 00:43:18,460 เพราะเรารู้ว่าทุกครั้งหลังเต็มรูปแบบ ย้ำผ่านแถวที่นี่ 1024 00:43:18,460 --> 00:43:24,050 เหมือนวงเต็มทุกที่นี่เรารู้ว่า ที่หนึ่งขององค์ประกอบเหล่านี้ 1025 00:43:24,050 --> 00:43:25,760 จะถูกจัดเรียงในตอนท้าย 1026 00:43:25,760 --> 00:43:28,294 >> ดังนั้นเราจึงไม่ต้องกังวลเกี่ยวกับการที่ 1027 00:43:28,294 --> 00:43:29,710 ไม่ว่าทำให้ความรู้สึกที่ทุกคนหรือไม่ 1028 00:43:29,710 --> 00:43:30,950 ที่เคล็ดลับเล็ก ๆ เย็น? 1029 00:43:30,950 --> 00:43:32,060 1030 00:43:32,060 --> 00:43:37,270 ดังนั้นในกรณีที่ว่าถ้า เรากำลัง iterating ผ่าน 1031 00:43:37,270 --> 00:43:50,590 เรารู้ว่าเราต้องการที่จะตรวจสอบว่า n ที่หลากหลายและ n บวก 1 อยู่ในลำดับที่ 1032 00:43:50,590 --> 00:43:52,640 1033 00:43:52,640 --> 00:43:53,559 ตกลง 1034 00:43:53,559 --> 00:43:54,600 ดังนั้นนี่คือ pseudocode 1035 00:43:54,600 --> 00:43:57,540 เราต้องการที่จะตรวจสอบว่าอาร์เรย์ n และ n บวก 1 อยู่ในลำดับที่ 1036 00:43:57,540 --> 00:43:59,520 ดังนั้นสิ่งที่เราอาจจะต้องมี? 1037 00:43:59,520 --> 00:44:01,090 1038 00:44:01,090 --> 00:44:03,120 มันจะมีบางเงื่อนไข 1039 00:44:03,120 --> 00:44:04,220 มันจะเป็นถ้า 1040 00:44:04,220 --> 00:44:07,066 >> นักศึกษา: ถ้าอาร์เรย์ n คือ น้อยกว่าอาร์เรย์ n บวก 1 1041 00:44:07,066 --> 00:44:07,816 ผู้สอน: MM-HM 1042 00:44:07,816 --> 00:44:09,000 1043 00:44:09,000 --> 00:44:10,699 ดีน้อยกว่าหรือมากกว่า 1044 00:44:10,699 --> 00:44:11,615 นักเรียน: มากกว่า 1045 00:44:11,615 --> 00:44:15,850 1046 00:44:15,850 --> 00:44:17,620 จากนั้นเราก็ต้องการที่จะสลับพวกเขา 1047 00:44:17,620 --> 00:44:18,570 เผง 1048 00:44:18,570 --> 00:44:23,570 ดังนั้นตอนนี้เราได้รับในสิ่งที่ กลไกสำหรับการแลกเปลี่ยนพวกเขา? 1049 00:44:23,570 --> 00:44:24,840 1050 00:44:24,840 --> 00:44:28,137 ดังนั้นเราเดินผ่านในเวลาสั้น ๆ นี้ ประเภทของฟังก์ชั่นการแลกเปลี่ยนสัปดาห์ที่ผ่านมา 1051 00:44:28,137 --> 00:44:29,595 ไม่มีใครจำได้ว่าวิธีการทำงาน? 1052 00:44:29,595 --> 00:44:32,300 1053 00:44:32,300 --> 00:44:34,950 ดังนั้นเราจึงไม่สามารถเพียงแค่กำหนดให้พวกเขาใช่มั้ย? 1054 00:44:34,950 --> 00:44:36,640 เพราะหนึ่งของพวกเขาจะได้รับหายไป 1055 00:44:36,640 --> 00:44:41,696 ถ้าเราบอกว่าเท่ากับ B แล้ว B เท่ากับทุกอย่างฉับพลันทั้งสองของพวกเขา 1056 00:44:41,696 --> 00:44:43,150 เป็นเพียงเท่ากับบี 1057 00:44:43,150 --> 00:44:45,720 >> ดังนั้นสิ่งที่เราต้องทำคือเรา มีตัวแปรชั่วคราวที่ 1058 00:44:45,720 --> 00:44:49,055 จะถือเป็นหนึ่งในขณะที่ของเรา เราอยู่ในกระบวนการของการแลกเปลี่ยน 1059 00:44:49,055 --> 00:44:50,200 1060 00:44:50,200 --> 00:44:56,464 ดังนั้นสิ่งที่เรามีคือเราจะต้อง int บาง อุณหภูมิเท่ากับ to-- คุณสามารถกำหนดได้ 1061 00:44:56,464 --> 00:44:59,130 ที่ใดก็ตามที่คุณต้องการเพียงแค่ ให้แน่ใจว่าคุณติดตามการพูดไป 1062 00:44:59,130 --> 00:45:01,840 ดังนั้นในกรณีนี้ผมกำลังจะไป กำหนดให้อาร์เรย์ n บวก 1 1063 00:45:01,840 --> 00:45:03,360 1064 00:45:03,360 --> 00:45:07,674 เพื่อที่จะเก็บสิ่งที่ ค่าที่อยู่ในบล็อกที่สองว่า 1065 00:45:07,674 --> 00:45:08,590 ที่เรากำลังมองหาที่ 1066 00:45:08,590 --> 00:45:09,700 1067 00:45:09,700 --> 00:45:13,240 >> และจากนั้นเราสามารถทำได้คือเราสามารถไป ข้างหน้าและอาร์เรย์มอบหมาย n บวก 1, 1068 00:45:13,240 --> 00:45:14,990 เพราะเรารู้ว่าเรา มีค่าที่เก็บไว้ 1069 00:45:14,990 --> 00:45:16,645 1070 00:45:16,645 --> 00:45:19,270 นอกจากนี้ยังเป็นหนึ่งในขนาดใหญ่ things-- ผมไม่ทราบว่าถ้าใด ๆ ของคุณ 1071 00:45:19,270 --> 00:45:23,780 มีปัญหาที่ถ้าคุณเลือกสอง บรรทัดของรหัสสิ่งก็ทำงาน 1072 00:45:23,780 --> 00:45:25,880 การสั่งซื้อสินค้าเป็นสิ่งที่สำคัญมากในการบริการลูกค้า 1073 00:45:25,880 --> 00:45:29,450 เพื่อให้แน่ใจว่าคุณ diagram สิ่งที่ออกถ้าเป็นไปได้ 1074 00:45:29,450 --> 00:45:31,230 เป็นสิ่งที่เกิดขึ้นจริง 1075 00:45:31,230 --> 00:45:34,256 ดังนั้นตอนนี้เรากำลังจะไป กำหนด n อาร์เรย์บวก 1, 1076 00:45:34,256 --> 00:45:36,005 เพราะเรารู้ว่าเรา มีค่าที่เก็บไว้ 1077 00:45:36,005 --> 00:45:37,090 1078 00:45:37,090 --> 00:45:41,560 >> และเราสามารถกำหนดได้ว่ายังอาร์เรย์ n หรือในอาร์เรย์กรณีนี้ผม 1079 00:45:41,560 --> 00:45:50,540 1080 00:45:50,540 --> 00:45:51,465 ตัวแปรมากเกินไป 1081 00:45:51,465 --> 00:45:54,230 1082 00:45:54,230 --> 00:45:55,470 ตกลง 1083 00:45:55,470 --> 00:46:01,500 ดังนั้นตอนนี้เราได้กำหนดอาร์เรย์ฉัน บวก 1 เท่ากับสิ่งที่อยู่ในอาร์เรย์ฉัน 1084 00:46:01,500 --> 00:46:08,240 และตอนนี้เราสามารถกลับไปและ กำหนดอาร์เรย์ฉันเพื่ออะไร? 1085 00:46:08,240 --> 00:46:10,680 1086 00:46:10,680 --> 00:46:11,180 ใคร? 1087 00:46:11,180 --> 00:46:13,490 1088 00:46:13,490 --> 00:46:14,010 >> นักเรียน: 10 1089 00:46:14,010 --> 00:46:14,680 >> ผู้สอน: 10 1090 00:46:14,680 --> 00:46:15,180 เผง 1091 00:46:15,180 --> 00:46:16,930 1092 00:46:16,930 --> 00:46:18,640 และสิ่งสุดท้ายที่หนึ่ง 1093 00:46:18,640 --> 00:46:21,840 ถ้าเราเปลี่ยนมันตอนนี้ สิ่งที่เราจะต้องทำอย่างไร 1094 00:46:21,840 --> 00:46:23,740 อะไรคือสิ่งหนึ่งที่ ที่จะบอกเรา 1095 00:46:23,740 --> 00:46:27,542 ถ้าเราเคยยุติโครงการนี​​้หรือไม่? 1096 00:46:27,542 --> 00:46:29,250 สิ่งที่บอกเราว่าเรา มีรายการที่จัดเรียง? 1097 00:46:29,250 --> 00:46:31,560 1098 00:46:31,560 --> 00:46:33,750 ถ้าเราไม่ได้ทำสัญญาแลกเปลี่ยนใด ๆ ใช่มั้ย? 1099 00:46:33,750 --> 00:46:36,900 หากสัญญาแลกเปลี่ยนเท่ากับ เป็นศูนย์ในช่วงปลายนี้ 1100 00:46:36,900 --> 00:46:42,975 ดังนั้นเมื่อใดก็ตามที่คุณดำเนินการแลกเปลี่ยนในขณะที่เรา เพิ่งได้ที่นี่เราต้องการปรับปรุงสัญญาแลกเปลี่ยน 1101 00:46:42,975 --> 00:46:45,002 1102 00:46:45,002 --> 00:46:47,210 และฉันรู้ว่ามี คำถามก่อนหน้านี้เกี่ยวกับคุณสามารถ 1103 00:46:47,210 --> 00:46:49,689 ใช้ศูนย์หรือหนึ่งแทน ของจริงหรือเท็จ 1104 00:46:49,689 --> 00:46:50,980 และนั่นคือสิ่งนี้จะที่นี่ 1105 00:46:50,980 --> 00:46:52,750 ดังนั้นนี่กล่าวว่าหากไม่ได้แลกเปลี่ยน 1106 00:46:52,750 --> 00:47:01,310 ดังนั้นหากแลกเปลี่ยนเป็นศูนย์ซึ่งเป็นเท่าไหร่ฉันมักจะ ได้รับความจริงและ falses ของฉันผสมขึ้น 1107 00:47:01,310 --> 00:47:03,960 เราต้องการให้เราประเมิน เป็นจริงและก็ไม่ 1108 00:47:03,960 --> 00:47:07,680 1109 00:47:07,680 --> 00:47:09,630 ดังนั้นถ้ามันเป็นศูนย์แล้วมันเป็นเท็จ 1110 00:47:09,630 --> 00:47:12,560 ถ้าคุณปฏิเสธมันด้วย [? ปัง?] มันจะกลายเป็นความจริง 1111 00:47:12,560 --> 00:47:13,975 ดังนั้นแล้วสายนี้ดำเนินการ 1112 00:47:13,975 --> 00:47:15,060 1113 00:47:15,060 --> 00:47:17,370 >> ความจริงและเท็จและ ศูนย์และคนรับบ้า 1114 00:47:17,370 --> 00:47:20,690 เพียงแค่ถ้าคุณเดินอย่างช้าๆ ผ่านมันก็จะทำให้ความรู้สึก 1115 00:47:20,690 --> 00:47:23,320 แต่นั่นคือสิ่งเล็ก ๆ น้อย ๆ บิตของรหัสที่นี่ไม่ 1116 00:47:23,320 --> 00:47:26,490 ดังนั้นนี้ตรวจสอบเพื่อดู เราได้ทำสัญญาแลกเปลี่ยนใด ๆ 1117 00:47:26,490 --> 00:47:30,054 ดังนั้นถ้ามันสิ่งที่นอกเหนือจาก ศูนย์ก็จะเป็นเท็จ 1118 00:47:30,054 --> 00:47:31,970 และสิ่งทั้งหมดเป็น จะดำเนินการอีกครั้ง 1119 00:47:31,970 --> 00:47:33,150 1120 00:47:33,150 --> 00:47:33,650 เย็น? 1121 00:47:33,650 --> 00:47:34,660 1122 00:47:34,660 --> 00:47:36,000 >> นักเรียน: อะไรหยุดพักทำอย่างไร 1123 00:47:36,000 --> 00:47:38,990 >> ผู้สอน: ทำลายเพียง แบ่งให้คุณออกจากวง 1124 00:47:38,990 --> 00:47:41,570 ดังนั้นในกรณีนี้มันจะ เช่นเดียวจบโปรแกรม 1125 00:47:41,570 --> 00:47:43,828 และคุณจะเพียงแค่ มีรายการที่จัดเรียงของคุณ 1126 00:47:43,828 --> 00:47:44,536 นักเรียน: มหัศจรรย์ 1127 00:47:44,536 --> 00:47:48,094 1128 00:47:48,094 --> 00:47:49,010 ผู้สอน: ฉันขอโทษ? 1129 00:47:49,010 --> 00:47:52,110 นักเรียน: เพราะก่อนหน้านี้เรา ใช้เขียน 1 ไปเขียนเป็นศูนย์ 1130 00:47:52,110 --> 00:47:54,170 ที่จะนำเสนอว่าถ้า ที่จะทำงานได้หรือไม่ 1131 00:47:54,170 --> 00:47:54,878 >> ผู้สอน: ใช่ 1132 00:47:54,878 --> 00:47:56,410 เพื่อให้คุณสามารถกลับมาเป็นศูนย์หรือ 1 1133 00:47:56,410 --> 00:47:58,950 ในกรณีนี้เพราะเราไม่ได้จริง ทำอะไรที่มีฟังก์ชั่น 1134 00:47:58,950 --> 00:48:00,150 เราเพียงแค่ต้องการที่จะทำลายมัน 1135 00:48:00,150 --> 00:48:02,680 เราไม่ได้จริงๆดูแลเกี่ยวกับเรื่องนี้ 1136 00:48:02,680 --> 00:48:06,960 เบรกยังเป็นสิ่งที่ดีถ้า มันใช้สำหรับการทำลายออก 1137 00:48:06,960 --> 00:48:10,710 สี่ลูปหรือเงื่อนไขที่ คุณไม่ต้องการที่จะทำให้การดำเนินงาน 1138 00:48:10,710 --> 00:48:12,110 มันก็จะพาคุณออกจากพวกเขา 1139 00:48:12,110 --> 00:48:13,587 1140 00:48:13,587 --> 00:48:14,795 มันเป็นบิตของสิ่งที่แตกต่างกันนิดหน่อย 1141 00:48:14,795 --> 00:48:16,737 1142 00:48:16,737 --> 00:48:18,445 ฉันรู้สึกเหมือนมี จำนวนมากโบกมือ, 1143 00:48:18,445 --> 00:48:19,740 เหมือนที่คุณจะได้เรียนรู้เกี่ยวกับเรื่องนี้เร็ว ๆ นี้ 1144 00:48:19,740 --> 00:48:20,955 >> แต่คุณจะได้เรียนรู้เกี่ยวกับเรื่องนี้เร็ว ๆ นี้ 1145 00:48:20,955 --> 00:48:21,500 ฉันสัญญาว่า 1146 00:48:21,500 --> 00:48:22,670 1147 00:48:22,670 --> 00:48:23,170 ตกลง 1148 00:48:23,170 --> 00:48:24,840 เพื่อให้ทุกคนไม่ได้รับการจัดเรียงฟอง? 1149 00:48:24,840 --> 00:48:25,550 ไม่ได้เลวร้ายเกินไป 1150 00:48:25,550 --> 00:48:31,910 ย้ำผ่านการแลกเปลี่ยนสิ่งที่ใช้ ตัวแปรชั่วคราวและเรากำลังตั้งค่าทั้งหมดที่นั่น? 1151 00:48:31,910 --> 00:48:32,960 เย็น 1152 00:48:32,960 --> 00:48:34,080 น่ากลัว 1153 00:48:34,080 --> 00:48:34,807 ตกลง 1154 00:48:34,807 --> 00:48:35,765 กลับไปยัง PowerPoint 1155 00:48:35,765 --> 00:48:38,140 1156 00:48:38,140 --> 00:48:40,130 คำถามใด ๆ โดยทั่วไป เกี่ยวกับเหล่านี้เพื่อให้ห่างไกล? 1157 00:48:40,130 --> 00:48:41,200 1158 00:48:41,200 --> 00:48:41,700 เย็น 1159 00:48:41,700 --> 00:48:43,110 1160 00:48:43,110 --> 00:48:43,695 MM-HM 1161 00:48:43,695 --> 00:48:45,279 >> นักเรียน: [ไม่ได้ยิน] int หลักมักจะ 1162 00:48:45,279 --> 00:48:46,695 คุณจะต้องมีที่สำหรับการนี​​้ 1163 00:48:46,695 --> 00:48:48,400 1164 00:48:48,400 --> 00:48:53,550 >> ผู้สอน: ดังนั้นเราได้เพียงแค่มอง เพียงขั้นตอนวิธีการเรียงลำดับที่เกิดขึ้นจริง 1165 00:48:53,550 --> 00:48:54,559 1166 00:48:54,559 --> 00:48:56,350 ถ้าคุณมีมันอยู่ภายใน เหมือนโปรแกรมขนาดใหญ่ 1167 00:48:56,350 --> 00:48:57,891 คุณจะต้องอยู่ที่ไหนสักแห่งหลัก int 1168 00:48:57,891 --> 00:49:00,070 1169 00:49:00,070 --> 00:49:02,880 ทั้งนี้ขึ้นอยู่กับที่คุณ ใช้อัลกอริทึมนี้ 1170 00:49:02,880 --> 00:49:05,860 มันจะตรวจสอบสิ่งที่เป็น ถูกส่งกลับโดยมัน 1171 00:49:05,860 --> 00:49:09,960 แต่สำหรับกรณีของเราเราไม่เคร่งครัด มองไปที่วิธีการทำอย่างนี้จริง 1172 00:49:09,960 --> 00:49:11,300 ย้ำผ่านอาร์เรย์ 1173 00:49:11,300 --> 00:49:12,570 ดังนั้นเราจึงไม่ต้องกังวลเกี่ยวกับเรื่องนี้ 1174 00:49:12,570 --> 00:49:14,150 1175 00:49:14,150 --> 00:49:19,830 >> ดังนั้นเราจึงมีการพูดคุยเกี่ยวกับกรณีที่ดีที่สุดและ สถานการณ์ที่เลวร้ายที่สุดกรณีสำหรับการค้นหาไบนารี 1176 00:49:19,830 --> 00:49:22,470 ดังนั้นจึงเป็นสิ่งสำคัญที่จะทำ ที่สำหรับแต่ละประเภทของเรา 1177 00:49:22,470 --> 00:49:24,200 1178 00:49:24,200 --> 00:49:27,560 ดังนั้นสิ่งที่คุณคิดว่าเป็นที่เลวร้ายที่สุด runtime กรณีของการจัดเรียงฟอง? 1179 00:49:27,560 --> 00:49:29,560 1180 00:49:29,560 --> 00:49:30,700 พวกคุณจำได้ไหม? 1181 00:49:30,700 --> 00:49:31,784 >> นักเรียน: ยังไม่มีลบ 1 1182 00:49:31,784 --> 00:49:32,700 ผู้สอน: ไม่มีลบ 1 1183 00:49:32,700 --> 00:49:35,070 เพื่อที่ว่าหมายความว่ามี n ลบ 1 เปรียบเทียบ 1184 00:49:35,070 --> 00:49:40,060 ดังนั้นสิ่งหนึ่งที่ต้องตระหนักคือ ว่าในรอบแรก 1185 00:49:40,060 --> 00:49:43,360 เราไปถึงเราเปรียบเทียบ two-- เหล่านี้เพื่อให้เป็นที่ 1 1186 00:49:43,360 --> 00:49:46,685 ทั้งสองสามสี่ 1187 00:49:46,685 --> 00:49:48,070 1188 00:49:48,070 --> 00:49:55,050 ดังนั้นหลังจากที่ซ้ำหนึ่งที่เรา มีสี่การเปรียบเทียบ 1189 00:49:55,050 --> 00:49:58,230 เมื่อผมพูดถึงรันไทม์และ n 1190 00:49:58,230 --> 00:50:04,680 n แทนจำนวนของการเปรียบเทียบ เป็นหน้าที่ของวิธีการหลายองค์ประกอบ 1191 00:50:04,680 --> 00:50:05,570 เรามี 1192 00:50:05,570 --> 00:50:06,430 OK? 1193 00:50:06,430 --> 00:50:08,860 >> ดังนั้นเราจึงผ่านไปเรามีสี่ 1194 00:50:08,860 --> 00:50:11,780 ครั้งต่อไปที่คุณรู้ว่าเราทำไม่ได้ ต้องดูแลนี้ 1195 00:50:11,780 --> 00:50:15,140 เราเปรียบเทียบทั้งสองเหล่านี้ สองคนนี้ทั้งสองเหล่านี้ 1196 00:50:15,140 --> 00:50:20,050 และถ้าเราไม่ได้มีการเพิ่มประสิทธิภาพที่ กับวงสี่ที่ผมเขียน 1197 00:50:20,050 --> 00:50:22,750 คุณจะได้รับการเปรียบเทียบในที่นี่ anyways 1198 00:50:22,750 --> 00:50:26,170 ดังนั้นคุณจะต้อง วิ่งผ่านอาร์เรย์ 1199 00:50:26,170 --> 00:50:34,380 และทำให้การเปรียบเทียบ n n ครั้งเพราะเราทุกครั้ง 1200 00:50:34,380 --> 00:50:36,670 วิ่งผ่านนั้นเราจัดเรียงสิ่งหนึ่ง 1201 00:50:36,670 --> 00:50:38,300 1202 00:50:38,300 --> 00:50:41,475 >> และทุกครั้งที่เราวิ่งผ่าน อาร์เรย์ที่เราทำ n เปรียบเทียบ 1203 00:50:41,475 --> 00:50:42,920 1204 00:50:42,920 --> 00:50:46,330 ดังนั้น runtime ของเรานี้ จริงยกกำลัง n ซึ่ง 1205 00:50:46,330 --> 00:50:48,400 เป็นเรื่องที่เลวร้ายของเรา เข้าสู่ระบบปลายเพราะเห็นว่า 1206 00:50:48,400 --> 00:50:51,965 หมายความว่าถ้าเรามีสี่ พันล้านองค์ประกอบก็ 1207 00:50:51,965 --> 00:50:55,260 จะพาเราสี่พันล้าน ยกกำลังแทน 32 1208 00:50:55,260 --> 00:51:01,240 จึงไม่รันไทม์ที่ดีที่สุด แต่สำหรับบางสิ่งบางอย่าง 1209 00:51:01,240 --> 00:51:04,610 คุณรู้ว่าถ้าคุณอยู่ภายใน บางช่วงขององค์ประกอบ 1210 00:51:04,610 --> 00:51:06,540 การจัดเรียงฟองอาจจะปรับใช้ 1211 00:51:06,540 --> 00:51:07,530 >> ตกลง 1212 00:51:07,530 --> 00:51:12,290 ดังนั้นตอนนี้สิ่งที่เป็นจริงในกรณีที่ดีที่สุด? 1213 00:51:12,290 --> 00:51:14,357 1214 00:51:14,357 --> 00:51:14,940 นักเรียน: ศูนย์? 1215 00:51:14,940 --> 00:51:16,420 หรือ 1? 1216 00:51:16,420 --> 00:51:18,140 >> ผู้สอน: 1 ดังนั้นจะ เป็นหนึ่งในการเปรียบเทียบ 1217 00:51:18,140 --> 00:51:19,114 ขวา 1218 00:51:19,114 --> 00:51:20,002 >> นักเรียน: ยังไม่มีลบ 1? 1219 00:51:20,002 --> 00:51:21,380 1220 00:51:21,380 --> 00:51:22,320 >> ผู้สอน: ดังนั้นใช่ 1221 00:51:22,320 --> 00:51:22,990 ดังนั้น n ลบ 1 1222 00:51:22,990 --> 00:51:26,510 เมื่อใดก็ตามที่คุณมีแนวคิดเช่น n ลบ 1 เรามักจะเพียงวางมันออก 1223 00:51:26,510 --> 00:51:31,680 และเราก็บอกว่า n เพราะคุณมี เพื่อเปรียบเทียบแต่ละ these-- แต่ละคู่ 1224 00:51:31,680 --> 00:51:36,470 ดังนั้นมันจะ n ลบ 1 ซึ่งเรา เราก็บอกว่าจะอยู่ที่ประมาณ n 1225 00:51:36,470 --> 00:51:39,280 เมื่อคุณกำลังติดต่อกับรันไทม์ ทุกอย่างอยู่ในราคาใกล้เคียง 1226 00:51:39,280 --> 00:51:43,860 ตราบใดที่เป็นสัญลักษณ์ ที่ถูกต้องคุณจะดีสวย 1227 00:51:43,860 --> 00:51:45,700 >> นั่นคือวิธีการที่เราจัดการกับมัน 1228 00:51:45,700 --> 00:51:47,410 1229 00:51:47,410 --> 00:51:51,780 เพื่อที่ว่ากรณีที่ดีที่สุดคือ n ซึ่ง หมายความว่ารายการจะถูกจัดเรียงไว้แล้ว 1230 00:51:51,780 --> 00:51:54,320 และสิ่งที่เราทำคือการวิ่งผ่าน และตรวจสอบว่ามีการแยก 1231 00:51:54,320 --> 00:51:56,110 1232 00:51:56,110 --> 00:51:56,855 เย็น 1233 00:51:56,855 --> 00:51:57,355 สิทธิ์ทั้งหมด 1234 00:51:57,355 --> 00:51:58,980 1235 00:51:58,980 --> 00:52:01,920 ดังนั้นตามที่คุณเห็นที่นี่เรา เพียงแค่มีบางกราฟขึ้น 1236 00:52:01,920 --> 00:52:02,660 ดังนั้น n ยกกำลัง 1237 00:52:02,660 --> 00:52:03,780 1238 00:52:03,780 --> 00:52:05,120 สนุก 1239 00:52:05,120 --> 00:52:09,730 มากยิ่งกว่า n ที่เราเห็นและ มากเลวร้ายยิ่งกว่า 2n เข้าสู่ระบบ 1240 00:52:09,730 --> 00:52:12,060 แล้วคุณยังได้รับการบันทึกลงในบันทึก 1241 00:52:12,060 --> 00:52:18,020 และคุณใช้เวลา 124, คุณได้รับใน เช่นบันทึกของดาวซึ่งเป็นอย่างบ้าคลั่ง 1242 00:52:18,020 --> 00:52:20,172 ดังนั้นหากคุณสนใจ บันทึกการค้นหาดาว 1243 00:52:20,172 --> 00:52:20,880 เป็นชนิดของความสนุกสนาน 1244 00:52:20,880 --> 00:52:22,800 1245 00:52:22,800 --> 00:52:24,220 ดังนั้นเราจึงมีแผนภูมิอันยิ่งใหญ่นี้ 1246 00:52:24,220 --> 00:52:25,360 1247 00:52:25,360 --> 00:52:28,720 เพียงแค่หัวขึ้น, นี้ แผนภูมิที่ยอดเยี่ยมที่จะมี 1248 00:52:28,720 --> 00:52:31,350 ในระยะกลางของคุณเพราะเรา ระยะเวลาที่จะขอให้คุณเรทเหล่านี้ 1249 00:52:31,350 --> 00:52:36,090 ดังนั้นเพียงแค่หัวขึ้นมีนี้ด้วย ระยะกลางในแผ่นโกงอย่างมีความสุขของคุณ 1250 00:52:36,090 --> 00:52:36,616 มี 1251 00:52:36,616 --> 00:52:37,990 ดังนั้นเราเพียงแค่มองที่จัดเรียงฟอง 1252 00:52:37,990 --> 00:52:39,510 1253 00:52:39,510 --> 00:52:42,370 กรณีที่เลวร้ายที่สุด, n ยกกำลังกรณีที่ดีที่สุด, n 1254 00:52:42,370 --> 00:52:43,367 1255 00:52:43,367 --> 00:52:44,950 และเรากำลังจะไปดูที่คนอื่น ๆ 1256 00:52:44,950 --> 00:52:47,940 >> และในขณะที่คุณสามารถมองเห็นเท่านั้น หนึ่งที่ไม่ดีจริงๆ 1257 00:52:47,940 --> 00:52:50,910 จะรวมการจัดเรียงซึ่งเราจะได้รับในเหตุผล 1258 00:52:50,910 --> 00:52:52,690 1259 00:52:52,690 --> 00:52:55,215 ดังนั้นเรากำลังจะไปที่ ต่อไปการจัดเรียงตัวเลือกหนึ่งที่ตรงนี้ 1260 00:52:55,215 --> 00:52:56,360 1261 00:52:56,360 --> 00:52:58,420 ไม่มีใครจำได้ว่า ตัวเลือกการจัดเรียงการทำงาน? 1262 00:52:58,420 --> 00:53:05,200 1263 00:53:05,200 --> 00:53:05,700 ไปมัน 1264 00:53:05,700 --> 00:53:08,210 >> นักเรียน: โดยทั่วไปผ่านไป สั่งซื้อและสร้างรายการใหม่ 1265 00:53:08,210 --> 00:53:11,001 และเช่นเดียวกับที่คุณกำลังวางองค์ประกอบ ในการใส่ไว้ในสถานที่ที่เหมาะสม 1266 00:53:11,001 --> 00:53:11,750 ในรายการใหม่ 1267 00:53:11,750 --> 00:53:14,040 >> ผู้สอน: เพื่อให้เสียง มากขึ้นเช่นการจัดเรียงแทรก 1268 00:53:14,040 --> 00:53:15,040 แต่คุณใกล้ชิดจริงๆ 1269 00:53:15,040 --> 00:53:15,915 พวกเขาคล้ายกันมาก 1270 00:53:15,915 --> 00:53:17,440 แม้ฉันจะได้รับพวกเขาผสมขึ้นบางครั้ง 1271 00:53:17,440 --> 00:53:18,981 ก่อนส่วนผมเป็นเช่นนี้รอสักครู่ 1272 00:53:18,981 --> 00:53:20,130 1273 00:53:20,130 --> 00:53:20,630 ตกลง 1274 00:53:20,630 --> 00:53:24,141 ดังนั้นสิ่งที่คุณต้องการ ทำคือการจัดเรียงตัวเลือก, 1275 00:53:24,141 --> 00:53:25,890 วิธีการที่คุณสามารถคิด เกี่ยวกับเรื่องนี้และวิธีการ 1276 00:53:25,890 --> 00:53:30,140 ฉันแน่ใจว่าฉันพยายามที่จะไม่ได้รับ พวกเขาผสมขึ้นเป็นมันผ่านไป 1277 00:53:30,140 --> 00:53:33,280 และจะมีการคัดเลือก จำนวนน้อยที่สุดและมัน 1278 00:53:33,280 --> 00:53:36,070 ทำให้ว่าที่จุดเริ่มต้นของรายการของคุณ 1279 00:53:36,070 --> 00:53:37,730 มันแลกเปลี่ยนกับจุดแรกที่ 1280 00:53:37,730 --> 00:53:42,600 1281 00:53:42,600 --> 00:53:45,370 พวกเขาจริงมีตัวอย่างสำหรับฉัน 1282 00:53:45,370 --> 00:53:46,540 น่ากลัว 1283 00:53:46,540 --> 00:53:50,130 ดังนั้นเพียงแค่วิธีการคิดของการเลือกพูดไป เรียงลำดับเลือกค่าที่น้อยที่สุด 1284 00:53:50,130 --> 00:53:51,940 และเรากำลังจะไป วิ่งผ่านตัวอย่างเช่น 1285 00:53:51,940 --> 00:53:55,320 ที่ผมคิดว่าจะช่วยเพราะ ผมคิดว่าภาพจะช่วยให้ 1286 00:53:55,320 --> 00:53:58,510 ดังนั้นเราจึงเริ่มต้นด้วยบางสิ่งบางอย่าง ที่ไม่ได้เรียงลำดับอย่างสมบูรณ์ 1287 00:53:58,510 --> 00:54:00,730 สีแดงจะถูกเรียงข้อมูล สีเขียวจะถูกจัดเรียง 1288 00:54:00,730 --> 00:54:02,190 มันจะทำให้ความรู้สึกในครั้งที่สอง 1289 00:54:02,190 --> 00:54:08,950 >> ดังนั้นเราจึงผ่านไปและเราย้ำ แต่ต้นจนจบ 1290 00:54:08,950 --> 00:54:12,320 และเราบอกว่าโอเค 2 จำนวนน้อยที่สุดของเรา 1291 00:54:12,320 --> 00:54:15,680 ดังนั้นเราจะใช้เวลา 2 และเรากำลังจะ เพื่อย้ายไปยังด้านหน้าของอาเรย์ของเรา 1292 00:54:15,680 --> 00:54:17,734 เพราะมันเป็น จำนวนน้อยที่สุดที่เรามี 1293 00:54:17,734 --> 00:54:19,150 นั่นคือสิ่งที่จะทำที่นี่ 1294 00:54:19,150 --> 00:54:20,820 มันก็จะสลับสองคน 1295 00:54:20,820 --> 00:54:21,850 1296 00:54:21,850 --> 00:54:25,450 ดังนั้นตอนนี้เรามีการจัดเรียง ส่วนหนึ่งและเป็นส่วนหนึ่งที่ไม่ได้เรียงลำดับ 1297 00:54:25,450 --> 00:54:27,810 และสิ่งที่ดีที่จะจำ เกี่ยวกับการจัดเรียงตัวเลือก 1298 00:54:27,810 --> 00:54:30,690 คือเรากำลังเพียงการเลือก จากส่วนที่ไม่ได้เรียงลำดับ 1299 00:54:30,690 --> 00:54:32,220 1300 00:54:32,220 --> 00:54:34,527 >> ส่วนที่เรียงลำดับที่คุณเพียงแค่ปล่อยให้อยู่คนเดียว 1301 00:54:34,527 --> 00:54:35,660 MM-HM? 1302 00:54:35,660 --> 00:54:38,452 >> นักเรียน: มันไม่ทราบว่าเป็น ที่เล็กที่สุดโดยไม่ต้องเปรียบเทียบ 1303 00:54:38,452 --> 00:54:39,868 ทุกค่าอื่นในอาร์เรย์ 1304 00:54:39,868 --> 00:54:41,250 ผู้สอน: มันไม่เปรียบเทียบ 1305 00:54:41,250 --> 00:54:42,041 เราชอบข้ามมัน 1306 00:54:42,041 --> 00:54:43,850 นี่เป็นเพียงทั่วไปโดยรวม 1307 00:54:43,850 --> 00:54:44,831 ใช่ 1308 00:54:44,831 --> 00:54:47,205 เมื่อเราเขียนโค้ดฉัน แน่ใจว่าคุณจะมีความพึงพอใจมากขึ้น 1309 00:54:47,205 --> 00:54:48,696 1310 00:54:48,696 --> 00:54:53,030 แต่คุณเก็บครั้งแรกนี้ องค์ประกอบที่มีขนาดเล็กที่สุด 1311 00:54:53,030 --> 00:54:56,110 คุณเปรียบเทียบและคุณ บอกว่าโอเคมันมีขนาดเล็ก? 1312 00:54:56,110 --> 00:54:56,660 ใช่ 1313 00:54:56,660 --> 00:54:57,460 ให้มัน 1314 00:54:57,460 --> 00:54:58,640 ที่นี่มันมีขนาดเล็ก? 1315 00:54:58,640 --> 00:54:59,660 ไม่มี? 1316 00:54:59,660 --> 00:55:02,510 >> นี้เป็นที่เล็กที่สุดของคุณ กำหนดเป็นค่าของคุณ 1317 00:55:02,510 --> 00:55:06,340 และคุณจะมีความสุขมาก เมื่อเราไปถึงรหัส 1318 00:55:06,340 --> 00:55:07,510 1319 00:55:07,510 --> 00:55:13,970 ดังนั้นเราไปถึงเราเปลี่ยนมันเป็นอย่างนั้น เรามองไปที่ส่วนนี้ไม่ได้เรียงลำดับ 1320 00:55:13,970 --> 00:55:15,810 ดังนั้นเราจะเลือกสาม 1321 00:55:15,810 --> 00:55:18,890 เรากำลังจะไปวางไว้ในที่ ในตอนท้ายของส่วนที่เรียงลำดับของเรา 1322 00:55:18,890 --> 00:55:20,267 1323 00:55:20,267 --> 00:55:23,100 และเรากำลังจะให้ทำ ที่ทำอย่างนั้นและทำที่ 1324 00:55:23,100 --> 00:55:24,130 1325 00:55:24,130 --> 00:55:27,420 ดังนั้นนี่คือชนิดของ pseudocode ของเราที่นี่ 1326 00:55:27,420 --> 00:55:29,470 1327 00:55:29,470 --> 00:55:31,380 เราจะรหัสมันขึ้นที่นี่ในครั้งที่สอง 1328 00:55:31,380 --> 00:55:34,140 1329 00:55:34,140 --> 00:55:37,270 แต่สิ่งเดียวที่จะเดิน ผ่านในระดับสูง 1330 00:55:37,270 --> 00:55:40,275 คุณกำลังจะไปจากที่ ฉันเท่ากับ 0 ถึง n ลบ 2 1331 00:55:40,275 --> 00:55:41,570 1332 00:55:41,570 --> 00:55:43,530 นั่นคือการเพิ่มประสิทธิภาพอีก 1333 00:55:43,530 --> 00:55:45,020 ไม่ต้องกังวลมากเกินไปเกี่ยวกับเรื่องนี้ 1334 00:55:45,020 --> 00:55:46,620 ดังนั้นในขณะที่คุณกำลังพูด 1335 00:55:46,620 --> 00:55:49,660 1336 00:55:49,660 --> 00:55:54,406 ขณะที่จาค็อบพูดอย่างไรเรา ติดตามสิ่งที่ต่ำสุดของเราคืออะไร? 1337 00:55:54,406 --> 00:55:55,030 ทำอย่างไรเราจะรู้หรือไม่? 1338 00:55:55,030 --> 00:55:57,060 เราต้องเปรียบเทียบ ทุกอย่างในรายการของเรา 1339 00:55:57,060 --> 00:55:59,600 >> ดังนั้นขั้นต่ำเท่ากับฉัน 1340 00:55:59,600 --> 00:56:03,870 มันเป็นเพียงแค่คำพูดในกรณีนี้ ดัชนีของค่าต่ำสุดของเรา 1341 00:56:03,870 --> 00:56:07,660 ดังนั้นแล้วมันจะย้ำผ่าน และมันจะไปจาก J เท่ากับฉันบวก 1 1342 00:56:07,660 --> 00:56:11,420 ดังนั้นเรารู้อยู่แล้วว่า นั่นคือองค์ประกอบแรกของเรา 1343 00:56:11,420 --> 00:56:13,240 เราไม่จำเป็นต้องเปรียบเทียบกับตัวเอง 1344 00:56:13,240 --> 00:56:16,970 ดังนั้นเราจึงเริ่มต้นการเปรียบเทียบต่อไป หนึ่งซึ่งเป็นเหตุผลที่มันเป็นผมบวก 1 ถึง n 1345 00:56:16,970 --> 00:56:20,110 ลบ 1 ซึ่งเป็น ปลายแถวมี 1346 00:56:20,110 --> 00:56:25,090 และเราบอกว่าถ้าอาร์เรย์ที่ J มีค่าน้อยกว่าอาร์เรย์นาที, 1347 00:56:25,090 --> 00:56:29,200 แล้วเรากำหนดที่ ดัชนีต่ำสุดของเรา 1348 00:56:29,200 --> 00:56:37,470 >> และถ้านาทีไม่เท่ากับที่ฉันเป็น ในการที่เราได้กลับมาที่นี่ 1349 00:56:37,470 --> 00:56:38,950 1350 00:56:38,950 --> 00:56:41,790 ดังนั้นชอบเมื่อแรกที่เราไม่ได้ทำอย่างใดอย่างหนึ่ง 1351 00:56:41,790 --> 00:56:49,310 ในกรณีนี้ก็จะเริ่มต้นที่ ศูนย์มันจะจบลงด้วยการที่สอง 1352 00:56:49,310 --> 00:56:53,010 ดังนั้นนาทีจะไม่เท่ากับฉันในท้ายที่สุด 1353 00:56:53,010 --> 00:56:55,720 ที่ช่วยให้เรารู้ว่า เราต้องสลับพวกเขา 1354 00:56:55,720 --> 00:56:57,420 1355 00:56:57,420 --> 00:57:00,470 ฉันรู้สึกเหมือนตัวอย่างที่เป็นรูปธรรม จะช่วยให้มากขึ้นกว่านี้ 1356 00:57:00,470 --> 00:57:04,970 ดังนั้นฉันจะรหัสนี้กับพวกคุณ ตอนนี้และผมคิดว่ามันจะดีกว่า 1357 00:57:04,970 --> 00:57:07,380 1358 00:57:07,380 --> 00:57:11,350 >> ทุกประเภทมีแนวโน้มที่จะทำงานในลักษณะที่ว่า ก็มักจะดีกว่าเพียงเพื่อดูพวกเขา 1359 00:57:11,350 --> 00:57:12,780 1360 00:57:12,780 --> 00:57:17,280 ดังนั้นสิ่งที่เราต้องการจะทำคือ อันดับแรกเราต้องการที่เล็กที่สุด 1361 00:57:17,280 --> 00:57:19,890 องค์ประกอบในตำแหน่งในอาร์เรย์ 1362 00:57:19,890 --> 00:57:21,280 สิ่งที่จาค็อบพูด 1363 00:57:21,280 --> 00:57:23,090 คุณจำเป็นต้องมีการจัดเก็บที่ใด 1364 00:57:23,090 --> 00:57:25,900 ดังนั้นเรากำลังจะเริ่มต้นที่นี่ iterating กว่าอาร์เรย์ 1365 00:57:25,900 --> 00:57:28,970 เรากำลังจะบอกว่ามันเป็นของเรา คนแรกที่เพิ่งจะเริ่มต้นด้วย 1366 00:57:28,970 --> 00:57:38,308 ดังนั้นเราจะมี int ที่มีขนาดเล็กเท่ากับอาร์เรย์ที่ฉัน 1367 00:57:38,308 --> 00:57:40,500 1368 00:57:40,500 --> 00:57:45,050 >> ดังนั้นสิ่งหนึ่งที่สังเกตเห็นทุก เวลาที่วงนี้ดำเนินการ, 1369 00:57:45,050 --> 00:57:48,550 เราจะเริ่มต้นขั้นตอนต่อไปตาม 1370 00:57:48,550 --> 00:57:54,780 1371 00:57:54,780 --> 00:57:57,440 เมื่อเราเริ่มต้นเรามองไปที่คนนี้ 1372 00:57:57,440 --> 00:58:00,840 ครั้งต่อไปเราย้ำผ่าน เรากำลังเริ่มต้นที่หนึ่งนี้ 1373 00:58:00,840 --> 00:58:02,680 และกำหนดค่าที่น้อยที่สุดของเรา 1374 00:58:02,680 --> 00:58:10,450 ดังนั้นจึงเป็นคล้ายกับการจัดเรียงฟอง ที่เรารู้ว่าหลังจากที่หนึ่งผ่าน 1375 00:58:10,450 --> 00:58:11,700 องค์ประกอบสุดท้ายนี้จะถูกจัดเรียง 1376 00:58:11,700 --> 00:58:12,810 1377 00:58:12,810 --> 00:58:15,120 ด้วยการจัดเรียงตัวเลือก, มันเป็นเพียงแค่ที่อยู่ตรงข้าม 1378 00:58:15,120 --> 00:58:18,950 >> ทุกครั้งที่ผ่านมาเรารู้ว่า เป็นคนแรกที่จะถูกจัดเรียง 1379 00:58:18,950 --> 00:58:21,360 หลังจากผ่านสอง คนที่สองจะถูกจัดเรียง 1380 00:58:21,360 --> 00:58:26,470 และเป็นคุณเห็นด้วยตัวอย่างภาพนิ่ง ส่วนการจัดเรียงของเราเพียงแค่ทำให้การเจริญเติบโต 1381 00:58:26,470 --> 00:58:34,020 ดังนั้นโดยการตั้งค่าหนึ่งที่เล็กที่สุดของเรา เพื่ออาร์เรย์ผมทั้งหมดมันทำ 1382 00:58:34,020 --> 00:58:37,340 เป็นสิ่งที่หด เรากำลังมองหาที่เพื่อให้เป็น 1383 00:58:37,340 --> 00:58:40,164 เพื่อลดจำนวน ของการเปรียบเทียบที่เราทำ 1384 00:58:40,164 --> 00:58:41,770 ไม่ว่าทำให้ความรู้สึกที่ทุกคนหรือไม่ 1385 00:58:41,770 --> 00:58:42,920 1386 00:58:42,920 --> 00:58:46,380 คุณจำเป็นต้องให้ฉันวิ่งผ่านที่ อีกครั้งช้าลงหรือในคำพูดที่แตกต่างกัน? 1387 00:58:46,380 --> 00:58:47,180 ฉันยินดีที่จะ 1388 00:58:47,180 --> 00:58:48,095 1389 00:58:48,095 --> 00:58:48,595 ตกลง 1390 00:58:48,595 --> 00:58:50,060 1391 00:58:50,060 --> 00:58:55,540 >> ดังนั้นเราจัดเก็บ ค่าที่จุดนี้ 1392 00:58:55,540 --> 00:58:57,840 แต่เรายังต้องการที่จะเก็บดัชนี 1393 00:58:57,840 --> 00:59:01,010 ดังนั้นเราจึงกำลังจะจัดเก็บ ตำแหน่งของที่เล็กที่สุด 1394 00:59:01,010 --> 00:59:02,770 หนึ่งซึ่งเป็นเพียงแค่จะเป็นฉัน 1395 00:59:02,770 --> 00:59:04,357 1396 00:59:04,357 --> 00:59:05,440 ดังนั้นตอนนี้จาค็อบเป็นที่พอใจ 1397 00:59:05,440 --> 00:59:06,870 เรามีสิ่งที่เก็บไว้ 1398 00:59:06,870 --> 00:59:08,240 1399 00:59:08,240 --> 00:59:11,870 และตอนนี้เราต้องมองผ่าน ส่วนที่ไม่ได้เรียงลำดับของอาร์เรย์ 1400 00:59:11,870 --> 00:59:18,170 ดังนั้นในกรณีนี้ จะเป็นของเราไม่ได้เรียงลำดับ 1401 00:59:18,170 --> 00:59:20,980 1402 00:59:20,980 --> 00:59:22,462 นี่คือฉัน 1403 00:59:22,462 --> 00:59:25,430 1404 00:59:25,430 --> 00:59:26,210 ตกลง 1405 00:59:26,210 --> 00:59:30,040 >> ดังนั้นสิ่งที่เรากำลังจะทำ เป็นไปได้สำหรับวง 1406 00:59:30,040 --> 00:59:32,066 เมื่อใดก็ตามที่คุณต้องการ ย้ำผ่านอาร์เรย์ 1407 00:59:32,066 --> 00:59:33,440 ความคิดของคุณสามารถไปสำหรับวง 1408 00:59:33,440 --> 00:59:34,760 1409 00:59:34,760 --> 00:59:38,090 ดังนั้นสำหรับบาง int k equals-- สิ่งที่เราคิดว่า 1410 00:59:38,090 --> 00:59:39,700 k จะเท่ากับเริ่มต้นด้วย? 1411 00:59:39,700 --> 00:59:41,580 1412 00:59:41,580 --> 00:59:44,766 นี่คือสิ่งที่เรากำหนดให้เป็นของเรามีขนาดเล็กที่สุด คุณค่าและเราต้องการที่จะเปรียบเทียบ 1413 00:59:44,766 --> 00:59:47,090 อะไรคือสิ่งที่เราต้องการที่จะเปรียบเทียบกับ? 1414 00:59:47,090 --> 00:59:48,730 มันจะเป็นแบบนี้ต่อไปใช่มั้ย? 1415 00:59:48,730 --> 00:59:53,200 ดังนั้นเราจึงต้องการ k ที่จะเริ่มต้น ฉันจะบวก 1 ที่จะเริ่มต้น 1416 00:59:53,200 --> 00:59:55,350 1417 00:59:55,350 --> 01:00:02,800 >> และเราต้องการ k ในกรณีนี้เรา แล้วขนาดได้เก็บไว้ที่นี่ 1418 01:00:02,800 --> 01:00:03,930 ดังนั้นเราก็สามารถใช้ขนาด 1419 01:00:03,930 --> 01:00:06,240 ขนาดเป็นขนาดของอาร์เรย์ 1420 01:00:06,240 --> 01:00:09,620 และเราก็ต้องการที่จะ ปรับปรุง k โดยหนึ่งในแต่ละครั้ง 1421 01:00:09,620 --> 01:00:17,410 1422 01:00:17,410 --> 01:00:17,910 เย็น 1423 01:00:17,910 --> 01:00:19,650 1424 01:00:19,650 --> 01:00:23,430 ดังนั้นตอนนี้เราต้องไปหา องค์ประกอบที่เล็กที่สุดที่นี่ 1425 01:00:23,430 --> 01:00:24,470 1426 01:00:24,470 --> 01:00:31,380 ดังนั้นหากเราย้ำถึงเรา อยากจะบอกว่าถ้าอาร์เรย์ที่ k 1427 01:00:31,380 --> 01:00:37,080 น้อยกว่า value-- ที่เล็กที่สุดของเรา นี่คือที่เรากำลังจริง 1428 01:00:37,080 --> 01:00:42,950 การติดตามของสิ่งที่ ตรงนี้มีขนาดเล็กที่สุด 1429 01:00:42,950 --> 01:00:47,740 แล้วเราต้องการที่จะกำหนด สิ่งที่มีค่าที่สุดของเราก็คือ 1430 01:00:47,740 --> 01:00:50,645 >> ซึ่งหมายความว่าโอ้เราไม่ ผ่านการทำซ้ำที่นี่ 1431 01:00:50,645 --> 01:00:51,699 1432 01:00:51,699 --> 01:00:53,740 สิ่งที่มีมูลค่าอยู่ที่นี่เป็น ไม่ได้เป็นสิ่งที่เล็กที่สุดของเรา 1433 01:00:53,740 --> 01:00:54,448 เราไม่ต้องการมัน 1434 01:00:54,448 --> 01:00:56,100 เราต้องการเปลี่ยนมัน 1435 01:00:56,100 --> 01:01:02,050 ดังนั้นถ้าเรากำลัง reassigning มันสิ่งที่ทำ คุณคิดว่าอาจจะอยู่ในรหัสนี้ที่นี่? 1436 01:01:02,050 --> 01:01:04,160 เราต้องการที่จะกำหนด ที่เล็กที่สุดและตำแหน่ง 1437 01:01:04,160 --> 01:01:05,740 1438 01:01:05,740 --> 01:01:07,010 ดังนั้นสิ่งที่มีขนาดเล็กที่สุดในตอนนี้? 1439 01:01:07,010 --> 01:01:08,422 1440 01:01:08,422 --> 01:01:09,130 นักเรียน: อาร์เรย์ k 1441 01:01:09,130 --> 01:01:09,963 ผู้สอน: อาร์เรย์ k 1442 01:01:09,963 --> 01:01:13,480 1443 01:01:13,480 --> 01:01:15,956 และสิ่งที่เป็นตำแหน่งที่ตอนนี้หรือไม่ 1444 01:01:15,956 --> 01:01:20,940 1445 01:01:20,940 --> 01:01:23,000 สิ่งที่ดัชนีของ ค่าที่น้อยที่สุดของเราหรือไม่ 1446 01:01:23,000 --> 01:01:24,030 1447 01:01:24,030 --> 01:01:24,530 มันเป็นเพียงแค่ k 1448 01:01:24,530 --> 01:01:25,690 1449 01:01:25,690 --> 01:01:27,790 ดังนั้น k อาเรย์, K, พวกเขาตรงกับขึ้น 1450 01:01:27,790 --> 01:01:31,670 1451 01:01:31,670 --> 01:01:33,120 ดังนั้นเราจึงต้องการที่จะกำหนดว่า 1452 01:01:33,120 --> 01:01:34,390 1453 01:01:34,390 --> 01:01:39,950 และแล้วหลังจากที่เราพบว่าเรามีขนาดเล็กที่สุด ดังนั้นในตอนท้ายของเรื่องนี้สำหรับวง 1454 01:01:39,950 --> 01:01:45,100 ที่นี่เราได้พบสิ่งที่มีขนาดเล็กที่สุดของเรา ค่าดังนั้นเราเพียงแค่สลับ 1455 01:01:45,100 --> 01:01:47,100 1456 01:01:47,100 --> 01:01:50,816 ในกรณีนี้เช่นบอกว่าของเรา ค่าที่น้อยที่สุดคือการออกจากที่นี่ 1457 01:01:50,816 --> 01:01:51,940 นี่คือค่าที่น้อยที่สุดของเรา 1458 01:01:51,940 --> 01:01:57,690 >> เราเพียงแค่ต้องการที่จะแลกเปลี่ยนได้ที่นี่ซึ่งเป็น สิ่งที่ฟังก์ชั่นการแลกว่าที่ด้านล่าง 1459 01:01:57,690 --> 01:02:01,270 ได้ซึ่งเราเพิ่งเขียนขึ้น ด้วยกันทั้งคู่นาทีที่ผ่านมา 1460 01:02:01,270 --> 01:02:02,775 ดังนั้นจึงควรมีลักษณะที่คุ้นเคย 1461 01:02:02,775 --> 01:02:04,320 1462 01:02:04,320 --> 01:02:08,030 แล้วมันก็จะย้ำ ผ่านจนกว่าจะถึงตลอดทาง 1463 01:02:08,030 --> 01:02:13,100 ไปยังจุดสิ้นสุดซึ่งหมายความว่าคุณ มีองค์ประกอบเป็นศูนย์ที่ไม่ได้เรียงลำดับ 1464 01:02:13,100 --> 01:02:14,800 และทุกอย่างอื่นที่ได้รับการจัดเรียง 1465 01:02:14,800 --> 01:02:16,216 1466 01:02:16,216 --> 01:02:16,715 ทำให้รู้สึก? 1467 01:02:16,715 --> 01:02:18,010 1468 01:02:18,010 --> 01:02:19,280 เล็ก ๆ น้อย ๆ เป็นรูปธรรม? 1469 01:02:19,280 --> 01:02:19,990 รหัสความช่วยเหลือ? 1470 01:02:19,990 --> 01:02:21,720 1471 01:02:21,720 --> 01:02:26,410 >> นักเรียน: สำหรับขนาดที่คุณไม่เคย จริงๆกำหนดหรือเปลี่ยนมัน 1472 01:02:26,410 --> 01:02:27,340 วิธีที่จะรู้หรือไม่? 1473 01:02:27,340 --> 01:02:32,380 >> ผู้สอน: ดังนั้นสิ่งหนึ่งที่จะ สังเกตเห็นที่นี่คือขนาด int 1474 01:02:32,380 --> 01:02:35,680 ดังนั้นเรากำลังจะบอกว่าในการจัดเรียง sort-- เป็นฟังก์ชั่นในครั้งนี้ case-- มัน 1475 01:02:35,680 --> 01:02:40,770 การจัดเรียงตัวเลือกมันผ่านไป ด้วยฟังก์ชั่น 1476 01:02:40,770 --> 01:02:43,460 ดังนั้นถ้ามันไม่ผ่าน ในการที่คุณจะทำอะไรบางอย่าง 1477 01:02:43,460 --> 01:02:47,840 เช่นเดียวกับความยาวของอาร์เรย์ หรือคุณจะย้ำผ่าน 1478 01:02:47,840 --> 01:02:49,390 การค้นหาความยาว 1479 01:02:49,390 --> 01:02:52,680 แต่เพราะมันผ่านไป ในเราก็สามารถใช้งานได้ 1480 01:02:52,680 --> 01:02:55,720 คุณเพียงแค่สมมติว่าผู้ใช้ ให้คุณมีขนาดที่ถูกต้องที่ 1481 01:02:55,720 --> 01:02:57,698 จริงเป็น ขนาดของอาร์เรย์ของคุณ 1482 01:02:57,698 --> 01:02:59,461 1483 01:02:59,461 --> 01:02:59,960 เย็น? 1484 01:02:59,960 --> 01:03:01,610 1485 01:03:01,610 --> 01:03:05,870 >> ถ้าพวกคุณมีปัญหากับเหล่านี้ หรือต้องการการฝึกฝนเพิ่มเติมการเขียนโปรแกรมทุกประเภท 1486 01:03:05,870 --> 01:03:08,050 ด้วยตัวคุณเองคุณควร ไป study.cs50 1487 01:03:08,050 --> 01:03:11,560 1488 01:03:11,560 --> 01:03:12,670 มันเป็นเครื่องมือ 1489 01:03:12,670 --> 01:03:15,040 พวกเขามีการตรวจสอบว่า จริงคุณสามารถเขียน 1490 01:03:15,040 --> 01:03:16,180 พวกเขาทำเทียม 1491 01:03:16,180 --> 01:03:19,310 พวกเขามีวิดีโอมากขึ้นและสไลด์ รวมทั้งคนที่ฉันใช้ที่นี่ 1492 01:03:19,310 --> 01:03:23,150 ดังนั้นหากคุณยังคงความรู้สึก ฝอยเล็ก ๆ น้อย ๆ พยายามที่ออกมา 1493 01:03:23,150 --> 01:03:25,670 และเช่นเคยมาพูดคุยกับผมด้วย 1494 01:03:25,670 --> 01:03:26,320 มีคำถาม? 1495 01:03:26,320 --> 01:03:28,611 >> นักเรียน: ที่คุณพูด ขนาดที่กำหนดไว้ก่อนหน้านี้? 1496 01:03:28,611 --> 01:03:29,234 1497 01:03:29,234 --> 01:03:29,900 ผู้สอน: ใช่ 1498 01:03:29,900 --> 01:03:35,570 ขนาดที่กำหนดไว้ก่อนหน้านี้ ที่นี่ในการประกาศฟังก์ชัน 1499 01:03:35,570 --> 01:03:39,060 เพื่อให้คุณคิดว่ามันถูกส่งผ่านไปใน โดยผู้ใช้และเพื่อประโยชน์ของความเรียบง่าย 1500 01:03:39,060 --> 01:03:41,896 เราจะคิดว่า ผู้ใช้ให้เราขนาดที่ถูกต้อง 1501 01:03:41,896 --> 01:03:43,240 เย็น 1502 01:03:43,240 --> 01:03:44,390 นั่นคือการจัดเรียงตัวเลือก 1503 01:03:44,390 --> 01:03:45,590 1504 01:03:45,590 --> 01:03:47,640 Guys, ฉันรู้ว่าเรากำลังเรียนรู้จำนวนมากในวันนี้ 1505 01:03:47,640 --> 01:03:49,710 มันเป็นข้อมูลที่มีความหนาแน่นสูงสำหรับส่วน 1506 01:03:49,710 --> 01:03:51,880 1507 01:03:51,880 --> 01:03:57,340 ดังนั้นด้วยความที่เราจะไป จะไปจัดเรียงแทรก 1508 01:03:57,340 --> 01:04:01,550 1509 01:04:01,550 --> 01:04:02,510 >> ตกลง 1510 01:04:02,510 --> 01:04:06,100 ดังนั้นก่อนที่เราจะต้องทำ การวิเคราะห์รันไทม์ของเราที่นี่ 1511 01:04:06,100 --> 01:04:10,190 ดังนั้นในกรณีที่ดีที่สุด ที่ได้รับตั้งแต่ฉันพบคุณ 1512 01:04:10,190 --> 01:04:11,960 โต๊ะฉันแล้ว ชนิดของให้มันออกไป 1513 01:04:11,960 --> 01:04:15,430 แต่ runtime กรณีที่ดีที่สุดสิ่งที่เราคิดว่า? 1514 01:04:15,430 --> 01:04:17,310 1515 01:04:17,310 --> 01:04:18,130 ทุกอย่างถูกจัดเรียง 1516 01:04:18,130 --> 01:04:21,040 1517 01:04:21,040 --> 01:04:22,070 ไม่มีกำลัง 1518 01:04:22,070 --> 01:04:24,780 ใครมีคำอธิบาย สำหรับเหตุผลที่คุณคิดว่า? 1519 01:04:24,780 --> 01:04:29,060 1520 01:04:29,060 --> 01:04:30,519 >> นักเรียน: คุณกำลังเปรียบเทียบ through-- 1521 01:04:30,519 --> 01:04:31,268 ผู้สอน: ขวา 1522 01:04:31,268 --> 01:04:32,540 คุณกำลังเปรียบเทียบผ่าน 1523 01:04:32,540 --> 01:04:35,630 ที่ย้ำทุกแม้ว่า เรากำลัง decrementing นี้โดยหนึ่ง 1524 01:04:35,630 --> 01:04:38,950 คุณยังคงค้นหาผ่าน ทุกอย่างเพื่อหาหนึ่งที่เล็กที่สุด 1525 01:04:38,950 --> 01:04:42,390 ดังนั้นแม้ว่าค่าที่น้อยที่สุดของคุณ อยู่ที่นี่ที่จุดเริ่มต้น 1526 01:04:42,390 --> 01:04:44,710 คุณยังคงเปรียบเทียบ กับทุกอย่างอื่น 1527 01:04:44,710 --> 01:04:46,550 เพื่อให้แน่ใจว่ามันเป็นสิ่งที่มีขนาดเล็กที่สุด 1528 01:04:46,550 --> 01:04:49,820 ดังนั้นคุณจะจบลงด้วยการวิ่งผ่าน ประมาณ n กำลังสองคูณ 1529 01:04:49,820 --> 01:04:51,090 1530 01:04:51,090 --> 01:04:51,590 สิทธิ์ทั้งหมด 1531 01:04:51,590 --> 01:04:52,785 และสิ่งที่เป็นกรณีที่เลวร้ายที่สุดได้หรือไม่? 1532 01:04:52,785 --> 01:04:54,350 1533 01:04:54,350 --> 01:04:57,980 นอกจากนี้ยังยกกำลัง n เพราะคุณกำลังจะ จะทำขั้นตอนเดียวกันกับที่ 1534 01:04:57,980 --> 01:05:01,670 ดังนั้นในกรณีนี้การเลือก การเรียงลำดับมีบางสิ่งบางอย่าง 1535 01:05:01,670 --> 01:05:04,010 ว่าเรายังเรียก runtime คาดว่า 1536 01:05:04,010 --> 01:05:07,400 ดังนั้นในคนอื่น ๆ เราก็รู้ว่า ขอบเขตบนและล่าง 1537 01:05:07,400 --> 01:05:11,180 ขึ้นอยู่กับว่าเราบ้า รายชื่อหรือวิธีคัดเลือกมันเป็น 1538 01:05:11,180 --> 01:05:15,350 พวกเขาแตกต่างกันระหว่าง n หรือ n กำลังสอง 1539 01:05:15,350 --> 01:05:16,550 เราไม่ทราบว่า 1540 01:05:16,550 --> 01:05:22,820 >> แต่เป็นเพราะการจัดเรียงตัวเลือกมีเดียวกัน เลวร้ายที่สุดและกรณีที่ดีที่สุดที่จะบอกเราว่า 1541 01:05:22,820 --> 01:05:25,880 ไม่ว่าสิ่งที่ชนิดของข้อมูลที่เรา มีไม่ว่าจะเป็นอย่างสมบูรณ์ 1542 01:05:25,880 --> 01:05:29,130 หรือการจัดเรียงอย่างสมบูรณ์ ย้อนกลับจัดเรียงมัน 1543 01:05:29,130 --> 01:05:30,740 จะใช้จำนวนเงินเดียวกันของเวลา 1544 01:05:30,740 --> 01:05:33,760 ดังนั้นในกรณีที่ว่าถ้าคุณ จำได้จากตารางของเรา 1545 01:05:33,760 --> 01:05:38,610 มันจริงมีค่าที่ ทั้งสองประเภทไม่ได้ 1546 01:05:38,610 --> 01:05:40,390 ซึ่งเป็น runtime คาดว่า 1547 01:05:40,390 --> 01:05:43,350 เพื่อให้เรารู้ว่าเมื่อใดก็ตาม เราจะดำเนินการจัดเรียงตัวเลือก, 1548 01:05:43,350 --> 01:05:45,380 ก็รับประกันว่าจะให้ ทำงานทุกครั้งที่ยกกำลัง n 1549 01:05:45,380 --> 01:05:46,630 มีความแปรปรวนไม่มีคือ 1550 01:05:46,630 --> 01:05:47,630 ก็คาดว่าเพียงแค่ 1551 01:05:47,630 --> 01:05:48,820 1552 01:05:48,820 --> 01:05:52,140 และอีกครั้งถ้าคุณต้องการที่จะเรียนรู้ ให้นำ CS 124 ในฤดูใบไม้ผลิ 1553 01:05:52,140 --> 01:05:55,370 1554 01:05:55,370 --> 01:05:56,712 สิทธิ์ทั้งหมด 1555 01:05:56,712 --> 01:05:57,545 เราได้เห็นคนนี้ 1556 01:05:57,545 --> 01:05:58,530 1557 01:05:58,530 --> 01:05:59,030 เย็น 1558 01:05:59,030 --> 01:06:00,930 ดังนั้นการแทรกการจัดเรียง 1559 01:06:00,930 --> 01:06:03,330 และฉันอาจจะ ที่จะลุกโชนผ่านทางนี้ 1560 01:06:03,330 --> 01:06:05,440 ฉันจะไม่ต้องพวกคุณรหัสมัน 1561 01:06:05,440 --> 01:06:06,580 เราก็จะเดินผ่านมัน 1562 01:06:06,580 --> 01:06:10,500 ดังนั้นการจัดเรียงแทรกเป็นชนิด คล้ายกับการจัดเรียงตัวเลือก 1563 01:06:10,500 --> 01:06:14,460 ในการที่เรามีการคัดเลือกทั้งสอง และจัดเรียงเป็นส่วนหนึ่งของอาเรย์ 1564 01:06:14,460 --> 01:06:20,260 >> แต่สิ่งที่แตกต่างกันคือ ในขณะที่เราผ่านไปทีละคน 1565 01:06:20,260 --> 01:06:24,210 เราก็ใช้เวลาหลายสิ่ง เป็นของเราต่อไปในการเรียงข้อมูล 1566 01:06:24,210 --> 01:06:28,507 และถูกต้องเรียงตามลำดับ เข้าแถวเรียงลำดับของเรา 1567 01:06:28,507 --> 01:06:30,090 มันจะทำให้รู้สึกมากขึ้นกับตัวอย่าง 1568 01:06:30,090 --> 01:06:31,140 1569 01:06:31,140 --> 01:06:35,430 เพื่อให้ทุกอย่างเริ่มเป็นเรียงข้อมูล เช่นเดียวกับการจัดเรียงตัวเลือก 1570 01:06:35,430 --> 01:06:38,740 และเรากำลังจะไปจัดเรียงใน เรียงลำดับตามที่เราได้รับ 1571 01:06:38,740 --> 01:06:40,360 1572 01:06:40,360 --> 01:06:43,340 ดังนั้นที่ผ่านครั้งแรกของเรา เราใช้เวลาค่าแรก 1573 01:06:43,340 --> 01:06:46,700 และเราบอกว่าตกลงคุณจะ ขณะนี้อยู่ในรายชื่อด้วยตัวเอง 1574 01:06:46,700 --> 01:06:49,150 >> เพราะคุณอยู่ในรายชื่อ โดยตัวคุณเองคุณจะจัดเรียง 1575 01:06:49,150 --> 01:06:52,460 ขอแสดงความยินดีในการเป็น องค์ประกอบแรกในอาร์เรย์นี้ 1576 01:06:52,460 --> 01:06:54,800 คุณกำลังแยกแล้วทั้งหมดด้วยตัวคุณเอง 1577 01:06:54,800 --> 01:06:58,900 ดังนั้นตอนนี้เรามีการจัดเรียง และอาเรย์ที่ไม่ได้เรียงลำดับ 1578 01:06:58,900 --> 01:07:01,760 ดังนั้นตอนนี้เราใช้ครั้งแรก 1579 01:07:01,760 --> 01:07:05,600 สิ่งที่เกิดขึ้นระหว่างที่นี่ และนี่เป็นที่ที่เราพูดว่า 1580 01:07:05,600 --> 01:07:08,890 ตกลงเราจะไปดูที่ ค่าแรกของอาร์เรย์คัดเลือกของเรา 1581 01:07:08,890 --> 01:07:13,270 และเรากำลังจะไปใส่ไว้ในของ สถานที่ที่ถูกต้องในอาร์เรย์ที่เรียงลำดับ 1582 01:07:13,270 --> 01:07:21,460 >> ดังนั้นสิ่งที่เราทำคือเราใช้เวลา 5 และ เราพูดว่าตกลง 5 มากกว่า 3 1583 01:07:21,460 --> 01:07:24,630 ดังนั้นเราเพียงแค่ใส่มันขวา ไปทางขวาของที่ 1584 01:07:24,630 --> 01:07:25,130 เรากำลังดี 1585 01:07:25,130 --> 01:07:26,200 1586 01:07:26,200 --> 01:07:28,420 ดังนั้นแล้วเราไปในที่ที่หนึ่งต่อไปของเรา 1587 01:07:28,420 --> 01:07:29,720 และเราใช้เวลา 2 1588 01:07:29,720 --> 01:07:34,330 เราพูดว่าตกลง 2 น้อย กว่า 3 ดังนั้นเราจึงรู้ว่ามัน 1589 01:07:34,330 --> 01:07:36,220 จะต้องมีการที่ ด้านหน้าของรายการของเราตอนนี้ 1590 01:07:36,220 --> 01:07:41,800 ดังนั้นสิ่งที่เราทำคือเราผลักดัน 3 และ 5 ลง และเราย้ายเข้ามาที่ 2 ช่องแรก 1591 01:07:41,800 --> 01:07:42,990 1592 01:07:42,990 --> 01:07:45,870 ดังนั้นเราเพียงแค่ใส่ลงใน สถานที่ที่ถูกต้องที่ควรจะเป็น 1593 01:07:45,870 --> 01:07:46,960 1594 01:07:46,960 --> 01:07:49,470 >> จากนั้นเราก็มองไปที่ของเรา หนึ่งต่อไปและเราบอกว่า 6 1595 01:07:49,470 --> 01:07:53,620 ตกลง 6 มากกว่า ทุกอย่างในอาร์เรย์ที่เรียงลำดับของเรา 1596 01:07:53,620 --> 01:07:56,000 ดังนั้นเราเพียงแค่แท็กไปยังจุดสิ้นสุด 1597 01:07:56,000 --> 01:07:56,960 แล้วเรามองไปที่ 4 1598 01:07:56,960 --> 01:07:58,130 1599 01:07:58,130 --> 01:08:03,020 4 น้อยกว่า 6 ก็น้อย กว่า 5 แต่ก็มากกว่า 3 1600 01:08:03,020 --> 01:08:06,270 ดังนั้นเราเพียงแค่ใส่ลงใน กลางระหว่าง 3 และ 5 1601 01:08:06,270 --> 01:08:07,380 1602 01:08:07,380 --> 01:08:10,530 ดังนั้นเพื่อให้ที่เล็ก ๆ น้อย ๆ บิตที่เป็นรูปธรรมมากขึ้น 1603 01:08:10,530 --> 01:08:12,280 ที่นี่เป็นชนิดของ ความคิดของสิ่งที่เกิดขึ้น 1604 01:08:12,280 --> 01:08:16,430 ดังนั้นสำหรับแต่ละองค์ประกอบไม่ได้เรียงลำดับเรา กำหนดตำแหน่งในส่วนที่เรียงลำดับ 1605 01:08:16,430 --> 01:08:17,090 มันเป็น 1606 01:08:17,090 --> 01:08:20,680 >> ดังนั้นการรักษาในใจ เรียงลำดับและเรียงข้อมูล 1607 01:08:20,680 --> 01:08:26,080 เรามีการสำรวจผ่านและตัวเลข ออกที่มันพอดีในอาร์เรย์ที่เรียงลำดับ 1608 01:08:26,080 --> 01:08:31,460 และเราใส่โดยขยับ องค์ประกอบด้านขวาของมันลง 1609 01:08:31,460 --> 01:08:34,910 แล้วเราก็ให้ ผ่านการทำซ้ำจนกว่าเรา 1610 01:08:34,910 --> 01:08:39,270 มีรายการที่จัดเรียงอย่างสมบูรณ์ ที่ไม่ได้เรียงลำดับคือตอนนี้เป็นศูนย์ 1611 01:08:39,270 --> 01:08:41,720 และเรียงลำดับจะขึ้น ความสมบูรณ์ของรายการของเรา 1612 01:08:41,720 --> 01:08:43,146 1613 01:08:43,146 --> 01:08:45,854 ดังนั้นอีกครั้งเพื่อให้ได้สิ่งที่ รูปธรรมมากขึ้นเรามี pseudocode 1614 01:08:45,854 --> 01:08:47,979 1615 01:08:47,979 --> 01:08:52,410 >> ดังนั้นโดยทั่วไปสำหรับฉันเป็น เท่ากับ 0 ถึง n ลบ 1, 1616 01:08:52,410 --> 01:08:54,790 นั่นเป็นเพียงความยาวของอาร์เรย์ของเรา 1617 01:08:54,790 --> 01:09:00,979 เรามีองค์ประกอบบางอย่างที่มีค่าเท่ากับ แถวแรกหรือดัชนีแรก 1618 01:09:00,979 --> 01:09:03,200 เราตั้ง J เท่ากับว่า 1619 01:09:03,200 --> 01:09:04,649 1620 01:09:04,649 --> 01:09:09,210 ดังนั้นในขณะที่ J มากกว่า ศูนย์และอาเรย์, J ลบ 1 1621 01:09:09,210 --> 01:09:11,660 มากกว่า องค์ประกอบดังนั้นทั้งหมดที่ทำ 1622 01:09:11,660 --> 01:09:17,479 คือการทำให้แน่ใจว่า J ของคุณจริงๆแสดงให้เห็นถึง 1623 01:09:17,479 --> 01:09:20,010 ส่วนที่ไม่ได้เรียงลำดับของอาร์เรย์ 1624 01:09:20,010 --> 01:09:30,745 >> ดังนั้นในขณะที่ยังคงมีสิ่งที่ การจัดเรียงและ J ลบหนึ่งเป็นเท่าไหร่สิ่งที่ 1625 01:09:30,745 --> 01:09:31,840 เป็นองค์ประกอบของเธอ? 1626 01:09:31,840 --> 01:09:34,760 J ก็ไม่เคยกำหนดไว้ที่นี่ 1627 01:09:34,760 --> 01:09:35,677 มันเป็นชนิดที่น่ารำคาญ 1628 01:09:35,677 --> 01:09:36,176 ตกลง 1629 01:09:36,176 --> 01:09:36,689 anyways 1630 01:09:36,689 --> 01:09:39,899 ดังนั้น J ลบ 1 คุณกำลังตรวจสอบ องค์ประกอบก่อนที่จะ 1631 01:09:39,899 --> 01:09:46,460 คุณกำลังจะบอกว่าตกลงเป็นองค์ประกอบ ก่อนที่จะที่ใดก็ตามที่ฉัน am-- ให้ 1632 01:09:46,460 --> 01:09:47,540 วาดออกมานี้ 1633 01:09:47,540 --> 01:09:52,580 1634 01:09:52,580 --> 01:09:56,830 ดังนั้นสมมติว่านี่คือ เหมือนที่ผ่านที่สองของเรา 1635 01:09:56,830 --> 01:09:59,525 ดังนั้นผมจึงเป็นไปได้ที่เท่าเทียมกัน 1 ซึ่งอยู่ที่นี่ 1636 01:09:59,525 --> 01:10:03,310 1637 01:10:03,310 --> 01:10:06,025 >> ดังนั้นผมจึงเป็นไปได้เท่ากับ 1 1638 01:10:06,025 --> 01:10:09,510 1639 01:10:09,510 --> 01:10:13,702 นี้จะเป็น 2, 4, 5, 6, 7 1640 01:10:13,702 --> 01:10:16,060 1641 01:10:16,060 --> 01:10:16,750 สิทธิ์ทั้งหมด 1642 01:10:16,750 --> 01:10:20,945 ดังนั้นองค์ประกอบของเราในกรณีนี้ เป็นไปได้เท่ากับ 4 1643 01:10:20,945 --> 01:10:22,110 1644 01:10:22,110 --> 01:10:24,946 และเรามี J ที่บาง จะเท่ากับ 1 1645 01:10:24,946 --> 01:10:29,770 1646 01:10:29,770 --> 01:10:30,971 โอ้, J เป็น decrementing 1647 01:10:30,971 --> 01:10:31,720 นั่นคือสิ่งที่มันเป็น 1648 01:10:31,720 --> 01:10:35,680 ดังนั้น J เท่ากับฉันดังนั้นสิ่งนี้ คำกล่าวที่ว่าก็คือว่าในขณะที่เราเดินหน้าต่อไป 1649 01:10:35,680 --> 01:10:37,530 เราเพียงแค่ให้แน่ใจว่า ว่าเราไม่ได้ไป 1650 01:10:37,530 --> 01:10:43,520 ดัชนีด้วยวิธีนี้เมื่อเรากำลังพยายาม ที่จะแทรกสิ่งที่เป็นรายการที่เรียงลำดับของเรา 1651 01:10:43,520 --> 01:10:49,850 >> ดังนั้นเมื่อ J เท่ากับ 1 ในกรณีนี้และ อาร์เรย์ J ลบ one-- ดังนั้นอาร์เรย์ J ลบ 1 1652 01:10:49,850 --> 01:10:54,610 เป็นที่ 2 ใน case-- นี้ถ้าว่าเป็น มากกว่าธาตุ 1653 01:10:54,610 --> 01:10:57,700 แล้วทั้งหมดนี้จะทำ สิ่งที่จะขยับลง 1654 01:10:57,700 --> 01:11:04,790 ดังนั้นในกรณีนี้อาร์เรย์ J ลบหนึ่ง จะเป็นอาร์เรย์เป็นศูนย์ซึ่งเป็น 2 1655 01:11:04,790 --> 01:11:08,430 2 ไม่เกิน 4 ดังนั้นนี้ไม่ได้ดำเนินการ 1656 01:11:08,430 --> 01:11:11,460 ดังนั้นการเปลี่ยนแปลงไม่ได้ย้ายลง 1657 01:11:11,460 --> 01:11:18,790 สิ่งนี้จะเป็นเพียงที่นี่ ย้ายแถวแยกของคุณลง 1658 01:11:18,790 --> 01:11:22,340 1659 01:11:22,340 --> 01:11:26,400 ในกรณีนี้ที่จริงเรา สามารถ do-- ขอให้ 3 1660 01:11:26,400 --> 01:11:28,080 1661 01:11:28,080 --> 01:11:31,970 ดังนั้นถ้าเราจะเดินผ่านด้วย ตัวอย่างนี้เราตอนนี้ที่นี่ 1662 01:11:31,970 --> 01:11:32,740 นี้จะถูกจัดเรียง 1663 01:11:32,740 --> 01:11:34,492 1664 01:11:34,492 --> 01:11:35,200 นี้ไม่ได้เรียงลำดับ 1665 01:11:35,200 --> 01:11:39,090 1666 01:11:39,090 --> 01:11:39,860 เย็น? 1667 01:11:39,860 --> 01:11:46,620 ดังนั้นผมจึงเท่ากับ 2 ดังนั้น องค์ประกอบของเราเท่ากับ 3 1668 01:11:46,620 --> 01:11:47,920 1669 01:11:47,920 --> 01:11:52,270 และเจของเราเท่ากับ 2 1670 01:11:52,270 --> 01:12:00,620 ดังนั้นเราจึงมองผ่านและเรา บอกว่าตกลงเป็นแถว J ลบหนึ่ง 1671 01:12:00,620 --> 01:12:03,470 มากกว่าองค์ประกอบ ที่เรากำลังมองหาที่? 1672 01:12:03,470 --> 01:12:05,540 และคำตอบคือใช่ใช่มั้ย? 1673 01:12:05,540 --> 01:12:11,275 4 มากกว่า 3 และ J คือ 2 ดังนั้นรหัสนี้ดำเนินการ 1674 01:12:11,275 --> 01:12:12,510 1675 01:12:12,510 --> 01:12:18,550 >> ดังนั้นตอนนี้สิ่งที่เราทำอาร์เรย์ที่ 2 ดังนั้นที่นี่เราสลับพวกเขา 1676 01:12:18,550 --> 01:12:25,620 ดังนั้นเราก็บอกว่าโอเคอาร์เรย์ ที่ 2 คือตอนนี้กำลังจะเป็น 3 1677 01:12:25,620 --> 01:12:28,130 1678 01:12:28,130 --> 01:12:32,340 และ J จะเท่ากับ J ลบ 1 ซึ่งเป็น 1 1679 01:12:32,340 --> 01:12:34,590 1680 01:12:34,590 --> 01:12:37,200 ที่น่ากลัว แต่ พวกคุณได้รับความคิด 1681 01:12:37,200 --> 01:12:38,360 J อยู่ในขณะนี้เท่ากับ 1 1682 01:12:38,360 --> 01:12:44,360 และอาเรย์เจเป็นเพียงการไปได้ เท่ากับองค์ประกอบซึ่งเป็น 4 ของเรา 1683 01:12:44,360 --> 01:12:45,950 1684 01:12:45,950 --> 01:12:48,570 ผมลบสิ่งที่ฉันไม่ควร มีหรือสิ่งที่ miswrote, 1685 01:12:48,570 --> 01:12:49,910 แต่พวกคุณได้รับความคิด 1686 01:12:49,910 --> 01:12:50,640 >> มันย้ายที่ n 1687 01:12:50,640 --> 01:12:51,920 1688 01:12:51,920 --> 01:12:57,960 แล้วถ้าเป็นก็จะห่วง อีกครั้งและมันจะบอกว่าตกลง J เป็น 1 ในตอนนี้ 1689 01:12:57,960 --> 01:13:00,665 และอาเรย์เจลบ 1 แล้ว 2 1690 01:13:00,665 --> 01:13:01,750 1691 01:13:01,750 --> 01:13:03,760 คือ 2 น้อยกว่าองค์ประกอบของเราหรือไม่ 1692 01:13:03,760 --> 01:13:04,540 ไม่มี? 1693 01:13:04,540 --> 01:13:07,970 นั่นหมายความว่าเราได้ แทรกองค์ประกอบนี้ 1694 01:13:07,970 --> 01:13:10,110 ในจุดที่ถูกต้องในอาร์เรย์ที่เรียงลำดับของเรา 1695 01:13:10,110 --> 01:13:14,400 แล้วเราสามารถใช้เวลานี้และเราจะพูดว่า ตกลงอาร์เรย์ที่เรียงลำดับของเราอยู่ที่นี่ 1696 01:13:14,400 --> 01:13:19,940 และมันจะใช้เวลาจำนวนนี้ 6 และ เหมือนตกลงคือ 6 น้อยกว่าจำนวนนี้หรือไม่? 1697 01:13:19,940 --> 01:13:20,480 ไม่มี? 1698 01:13:20,480 --> 01:13:21,080 เย็น 1699 01:13:21,080 --> 01:13:22,680 เราปรับ 1700 01:13:22,680 --> 01:13:23,530 >> ทำมันอีกครั้ง 1701 01:13:23,530 --> 01:13:24,740 เราบอกว่า 7 1702 01:13:24,740 --> 01:13:29,010 คือ 7 น้อยกว่าปลาย ของอาร์เรย์ที่เรียงลำดับของเราหรือไม่ 1703 01:13:29,010 --> 01:13:29,520 เลขที่ 1704 01:13:29,520 --> 01:13:30,430 ดังนั้นเราปรับ 1705 01:13:30,430 --> 01:13:32,760 ดังนั้นเรื่องนี้จะถูกจัดเรียง 1706 01:13:32,760 --> 01:13:38,610 พื้นทั้งหมดนี้จะ คือมันบอกว่าใช้เวลา 1707 01:13:38,610 --> 01:13:42,060 องค์ประกอบแรกของ อาเรย์ไม่ได้เรียงลำดับของคุณ 1708 01:13:42,060 --> 01:13:46,010 คิดออกว่ามันจะไป ในอาร์เรย์ที่เรียงลำดับของคุณ 1709 01:13:46,010 --> 01:13:48,780 และนี้ก็จะดูแล ของสัญญาแลกเปลี่ยนจะทำอย่างนั้น 1710 01:13:48,780 --> 01:13:51,300 คุณพื้นเพียงแค่การแลกเปลี่ยน จนกว่าจะมีในจุดที่เหมาะสม 1711 01:13:51,300 --> 01:13:53,600 1712 01:13:53,600 --> 01:13:56,990 ภาพที่มองเห็นคือการที่คุณ ย้ายทุกอย่างลงด้วยการทำที่ 1713 01:13:56,990 --> 01:13:59,420 >> ดังนั้นมันก็เหมือนครึ่งฟองการจัดเรียงในรูปแบบ 1714 01:13:59,420 --> 01:14:02,280 1715 01:14:02,280 --> 01:14:03,420 ตรวจสอบ 50 การศึกษา 1716 01:14:03,420 --> 01:14:06,000 ผมขอแนะนำให้พยายาม โค้ดนี้ด้วยตัวคุณเอง 1717 01:14:06,000 --> 01:14:07,220 1718 01:14:07,220 --> 01:14:12,450 หากคุณมีปัญหาใด ๆ หรือคุณต้องการ เห็นรหัสตัวอย่างสำหรับการจัดเรียงแทรก, 1719 01:14:12,450 --> 01:14:13,750 กรุณาแจ้งให้เราทราบ 1720 01:14:13,750 --> 01:14:14,500 ฉันมักจะไปรอบ ๆ 1721 01:14:14,500 --> 01:14:16,600 1722 01:14:16,600 --> 01:14:20,200 ดังนั้น runtime กรณีที่เลวร้าย และรันไทม์กรณีที่ดีที่สุด 1723 01:14:20,200 --> 01:14:30,700 ในขณะที่คุณผู้ชายเห็นจากตารางฉันแล้ว แสดงให้เห็นว่าคุณก็ทั้งสองยกกำลัง n และ n 1724 01:14:30,700 --> 01:14:35,590 >> ดังนั้นชนิดของออกไปจากสิ่งที่เราได้พูดคุย เกี่ยวกับทุกประเภทก่อนหน้านี้ที่เลวร้ายที่สุด 1725 01:14:35,590 --> 01:14:38,760 กรณี runtime คือว่าถ้า มันไม่ได้เรียงลำดับอย่างสมบูรณ์ 1726 01:14:38,760 --> 01:14:42,530 เราต้องเปรียบเทียบสิ่งเหล่านี้ครั้ง n 1727 01:14:42,530 --> 01:14:47,020 เราทำมากทั้งการเปรียบเทียบ เพราะถ้ามันอยู่ในลำดับที่กลับกัน, 1728 01:14:47,020 --> 01:14:50,360 เรากำลังจะบอกว่าตกลงนี้ เป็นเดียวกันนี้เป็นสิ่งที่ดี 1729 01:14:50,360 --> 01:14:54,650 และหนึ่งนี้จะต้องนำมาเปรียบเทียบ กับครั้งแรกที่จะย้ายกลับมา 1730 01:14:54,650 --> 01:14:56,710 และในขณะที่เราได้รับไป ท้ายเรามี 1731 01:14:56,710 --> 01:14:59,440 เพื่อเปรียบเทียบผลการเปรียบเทียบและ เปรียบเทียบกับทุกอย่าง 1732 01:14:59,440 --> 01:15:03,030 >> ดังนั้นมันจะจบลงด้วยการที่ ประมาณ n ยกกำลัง 1733 01:15:03,030 --> 01:15:09,510 ถ้ามันถูกต้องแล้วคุณ พูด, OK, 2, คุณดี 1734 01:15:09,510 --> 01:15:11,330 3 คุณเมื่อเทียบกับ 2 1735 01:15:11,330 --> 01:15:12,310 คุณดี 1736 01:15:12,310 --> 01:15:14,150 4 คุณเพียงแค่เปรียบเทียบกับหาง 1737 01:15:14,150 --> 01:15:14,990 คุณดี 1738 01:15:14,990 --> 01:15:17,140 6 เปรียบเทียบกับหางคุณดี 1739 01:15:17,140 --> 01:15:20,870 ดังนั้นสำหรับทุกจุดถ้ามันมีอยู่แล้ว เรียงลำดับที่คุณกำลังทำเปรียบเทียบหนึ่ง 1740 01:15:20,870 --> 01:15:22,320 จึงเป็นเพียง n 1741 01:15:22,320 --> 01:15:26,840 และเพราะเรามี runtime กรณีที่ดีที่สุด ของ n และรันไทม์กรณีที่เลวร้ายที่สุดของ n 1742 01:15:26,840 --> 01:15:28,680 ยกกำลังเราไม่มี runtime คาดว่า 1743 01:15:28,680 --> 01:15:31,290 1744 01:15:31,290 --> 01:15:34,020 >> มันก็ขึ้นอยู่กับ ความวุ่นวายของรายการของเรามี 1745 01:15:34,020 --> 01:15:35,860 1746 01:15:35,860 --> 01:15:39,530 และอีกครั้งหนึ่ง กราฟและตารางอื่น 1747 01:15:39,530 --> 01:15:41,170 ดังนั้นความแตกต่างระหว่างประเภท 1748 01:15:41,170 --> 01:15:44,180 ฉันแค่จะสายลมผ่านผม รู้สึกเหมือนเราได้พูดคุยกันอย่างกว้างขวาง 1749 01:15:44,180 --> 01:15:46,570 เกี่ยวกับวิธีที่พวกเขาทุกชนิด ของความแตกต่างกันและเชื่อมโยงกัน 1750 01:15:46,570 --> 01:15:50,564 ดังนั้นผสานการจัดเรียงเป็นคนสุดท้าย ฉันจะเบื่อพวกคุณด้วย 1751 01:15:50,564 --> 01:15:52,105 เราจะได้ภาพที่มีสีสันสวย 1752 01:15:52,105 --> 01:15:53,860 1753 01:15:53,860 --> 01:15:56,040 ดังนั้นผสานการจัดเรียงเป็นขั้นตอนวิธีเวียนเกิด 1754 01:15:56,040 --> 01:15:59,910 ดังนั้นพวกคุณรู้ว่าสิ่งที่ ฟังก์ชัน recursive คืออะไร? 1755 01:15:59,910 --> 01:16:01,550 1756 01:16:01,550 --> 01:16:03,320 >> ทุกคนต้องการที่จะพูด? 1757 01:16:03,320 --> 01:16:04,739 คุณต้องการที่จะลอง? 1758 01:16:04,739 --> 01:16:07,280 ดังนั้นฟังก์ชัน recursive เป็นเพียง ฟังก์ชันที่เรียกตัวเองว่า 1759 01:16:07,280 --> 01:16:08,570 1760 01:16:08,570 --> 01:16:11,590 ดังนั้นถ้าพวกคุณมีความคุ้นเคย กับลำดับฟีโบนักชี, 1761 01:16:11,590 --> 01:16:15,670 ที่ถือว่าซ้ำเพราะ คุณใช้ก่อนหน้านี้สอง 1762 01:16:15,670 --> 01:16:17,530 และเพิ่มพวกเขาร่วมกัน ที่จะได้รับอย่างใดอย่างหนึ่งต่อไปของคุณ 1763 01:16:17,530 --> 01:16:21,440 ดังนั้น recursive ผมคิดเสมอว่า การเรียกซ้ำเหมือนเกลียว 1764 01:16:21,440 --> 01:16:24,430 ดังนั้นคุณต้องการลอยลงไปในมัน 1765 01:16:24,430 --> 01:16:27,150 แต่มันเป็นเพียงฟังก์ชั่น ที่เรียกตัวเอง 1766 01:16:27,150 --> 01:16:32,660 >> และในความเป็นจริงได้อย่างรวดเร็วจริงๆฉัน สามารถแสดงสิ่งที่ดูเหมือนว่า 1767 01:16:32,660 --> 01:16:34,260 1768 01:16:34,260 --> 01:16:41,840 ดังนั้น recursive ที่นี่ถ้าเรามองนี้เป็น วิธี recursive เพื่อสรุปผลในช่วงอาร์เรย์ 1769 01:16:41,840 --> 01:16:45,900 1770 01:16:45,900 --> 01:16:47,880 ดังนั้นสิ่งที่เราทำคือ เรามีฟังก์ชั่นรวม 1771 01:16:47,880 --> 01:16:52,210 ผลรวมที่ใช้เวลาขนาดและอาเรย์ 1772 01:16:52,210 --> 01:16:55,210 และถ้าคุณสังเกตเห็นขนาด การลดลงโดยหนึ่งในแต่ละครั้ง 1773 01:16:55,210 --> 01:17:00,365 และทั้งหมดมันไม่คือถ้า x เท่ากับ zero-- ดังนั้นถ้าขนาดของอาร์เรย์ 1774 01:17:00,365 --> 01:17:02,710 เท่ากับ zero-- มันกลับเป็นศูนย์ 1775 01:17:02,710 --> 01:17:10,440 >> มิฉะนั้นจะสรุปนี้ องค์ประกอบสุดท้ายของอาร์เรย์ 1776 01:17:10,440 --> 01:17:14,790 และจากนั้นจะนำผลรวมของ ส่วนที่เหลือของอาเรย์ 1777 01:17:14,790 --> 01:17:17,555 ดังนั้นมันจึงเป็นเพียงการทำลายมันลง เป็นปัญหาที่มีขนาดเล็กและมีขนาดเล็ก 1778 01:17:17,555 --> 01:17:18,990 1779 01:17:18,990 --> 01:17:21,890 เรื่องยาวสั้นเรียกซ้ำ ฟังก์ชั่นที่เรียกตัวเอง 1780 01:17:21,890 --> 01:17:25,740 ถ้านั่นคือทั้งหมดที่คุณได้ออกจากนี้ นั่นคือสิ่งที่ฟังก์ชัน recursive เป็น 1781 01:17:25,740 --> 01:17:29,870 ถ้าคุณใช้เวลา 51, คุณจะได้รับมาก สะดวกสบายกับการเรียกซ้ำ 1782 01:17:29,870 --> 01:17:31,110 1783 01:17:31,110 --> 01:17:32,370 มันเย็นจริงๆ 1784 01:17:32,370 --> 01:17:34,660 มันทำให้ความรู้สึกที่เหมือน 03:00 คืนหนึ่งออก 1785 01:17:34,660 --> 01:17:37,900 และฉันก็ชอบทำไม ได้ฉันไม่เคยใช้นี้หรือไม่? 1786 01:17:37,900 --> 01:17:39,170 1787 01:17:39,170 --> 01:17:42,430 >> ดังนั้นสำหรับการจัดเรียงผสานพื้น สิ่งที่มันจะทำคือมัน 1788 01:17:42,430 --> 01:17:45,620 จะไปทำลายมันลงและทำลายมัน ลงไปจนเป็นเพียงองค์ประกอบเดียว 1789 01:17:45,620 --> 01:17:47,570 องค์ประกอบเดียวจะง่ายต่อการค้นหา 1790 01:17:47,570 --> 01:17:48,070 เราจะเห็นว่า 1791 01:17:48,070 --> 01:17:50,760 หากคุณมีองค์ประกอบหนึ่งก็ พิจารณาแยกแล้ว 1792 01:17:50,760 --> 01:17:53,800 ดังนั้นในการป้อนข้อมูลขององค์ประกอบ n, ถ้า n คือน้อยกว่า 2, 1793 01:17:53,800 --> 01:17:58,120 เพียงแค่กลับมาเพราะนั่นหมายความว่า มันเป็น 0 หรือ 1 ในขณะที่เราได้เห็น 1794 01:17:58,120 --> 01:18:00,050 ผู้ที่ได้รับการพิจารณาองค์ประกอบที่เรียงลำดับ 1795 01:18:00,050 --> 01:18:02,170 >> มิฉะนั้นทำลายมันในช่วงครึ่งปี 1796 01:18:02,170 --> 01:18:06,336 เรียงครึ่งแรกเรียงลำดับที่สอง ครึ่งหนึ่งแล้วผสานเข้าด้วยกัน 1797 01:18:06,336 --> 01:18:07,460 ทำไมมันเรียกว่าการจัดเรียงเวียน 1798 01:18:07,460 --> 01:18:08,700 1799 01:18:08,700 --> 01:18:12,155 ดังนั้นเราจึงมีที่นี่เราจะได้ค้า 1800 01:18:12,155 --> 01:18:13,410 1801 01:18:13,410 --> 01:18:17,210 ดังนั้นเราจึงให้พวกเขามี จนถึงขนาดอาร์เรย์เป็น 1 1802 01:18:17,210 --> 01:18:20,790 ดังนั้นเมื่อมันเป็น 1 เราก็กลับมา เพราะนี่คืออาร์เรย์ที่เรียงลำดับ 1803 01:18:20,790 --> 01:18:23,940 และนี่คืออาร์เรย์ที่เรียงลำดับและที่ อาร์เรย์ที่เรียงลำดับเรากำลังแยกทั้งหมด 1804 01:18:23,940 --> 01:18:25,390 1805 01:18:25,390 --> 01:18:29,420 ดังนั้นแล้วสิ่งที่เราทำคือเรา เริ่มต้นการควบรวมกิจการเข้าด้วยกัน 1806 01:18:29,420 --> 01:18:31,820 >> ดังนั้นวิธีที่คุณสามารถ คิดเกี่ยวกับการรวมกันเป็น 1807 01:18:31,820 --> 01:18:36,240 คุณเพียงแค่ลบขนาดเล็ก จำนวนของแต่ละอาร์เรย์ย่อย 1808 01:18:36,240 --> 01:18:38,330 และเพียงแค่ผนวกกับอาร์เรย์โผล่ออกมา 1809 01:18:38,330 --> 01:18:44,290 ดังนั้นถ้าคุณดูที่นี่เมื่อเรามี ชุดนี้เรามี 4, 6 และ 1 1810 01:18:44,290 --> 01:18:47,280 เมื่อเราต้องการที่จะรวมเหล่านี้ เรามองไปที่เหล่านี้สองครั้งแรก 1811 01:18:47,280 --> 01:18:50,730 และเราบอกว่าโอเค 1 มีขนาดเล็ก มันจะไปไปด้านหน้า 1812 01:18:50,730 --> 01:18:54,330 4 และ 6 มีอะไรที่จะเปรียบเทียบเป็น มันไปเพียงแค่แท็กไปยังจุดสิ้นสุด 1813 01:18:54,330 --> 01:18:58,020 >> เมื่อเรารวมทั้งสองเหล่านี้เราเพียงแค่ ใช้เวลาหนึ่งขนาดเล็กของทั้งสอง 1814 01:18:58,020 --> 01:18:59,310 ดังนั้นจึงเป็น 1 1815 01:18:59,310 --> 01:19:01,690 และตอนนี้เราใช้เวลา ขนาดเล็กของทั้งสองเหล่านี้ดังนั้น 2 1816 01:19:01,690 --> 01:19:03,330 ขนาดเล็กของทั้งสอง 3 1817 01:19:03,330 --> 01:19:06,260 ขนาดเล็กของทั้งสอง, 4, 5, 6 1818 01:19:06,260 --> 01:19:08,630 ดังนั้นคุณเพียงแค่ดึงออกเหล่านี้ 1819 01:19:08,630 --> 01:19:11,210 และเนื่องจากพวกเขาได้ การเรียงลำดับก่อนหน้านี้ 1820 01:19:11,210 --> 01:19:14,300 คุณเพียงแค่ต้องหนึ่ง การเปรียบเทียบในแต่ละครั้งที่มี 1821 01:19:14,300 --> 01:19:19,610 รหัสดังนั้นเพิ่มเติมได้ที่นี่แทนเพียง 1822 01:19:19,610 --> 01:19:24,410 เพื่อให้คุณเริ่มต้นที่ตรงกลางและ คุณเรียงลำดับซ้ายและขวา 1823 01:19:24,410 --> 01:19:26,180 และแล้วคุณก็รวมเหล่านั้น 1824 01:19:26,180 --> 01:19:30,080 >> และเราไม่ได้มีรหัส สำหรับการผสานที่นี่ 1825 01:19:30,080 --> 01:19:34,110 แต่อีกครั้งถ้าคุณไปที่ 50 การศึกษาก็จะอยู่ที่นั่น 1826 01:19:34,110 --> 01:19:36,860 มิฉะนั้นจะมาพูดคุยกับผม ถ้าคุณยังคงสับสน 1827 01:19:36,860 --> 01:19:42,340 ดังนั้นสิ่งที่เย็นที่นี่ก็คือกรณีที่ดีที่สุด กรณีที่เลวร้ายและรันไทม์คาดว่า 1828 01:19:42,340 --> 01:19:46,250 มีทั้งหมดในการเข้าสู่ระบบ n ซึ่ง จะดีกว่าเราได้ 1829 01:19:46,250 --> 01:19:48,000 เห็นส่วนที่เหลือของทุกประเภทของเรา 1830 01:19:48,000 --> 01:19:51,840 เราได้เห็น n ยกกำลัง และสิ่งที่เราจริง 1831 01:19:51,840 --> 01:19:54,380 ได้รับที่นี่เป็น n log n ซึ่งเป็นที่ดี 1832 01:19:54,380 --> 01:19:55,830 >> ดูที่วิธีการที่ดีที่ 1833 01:19:55,830 --> 01:19:56,780 เช่นโค้งอย่างมีความสุข 1834 01:19:56,780 --> 01:19:58,130 1835 01:19:58,130 --> 01:20:00,120 ดังนั้นที่มีประสิทธิภาพมากขึ้น 1836 01:20:00,120 --> 01:20:03,510 ถ้าคุณเคยสามารถใช้รวมการจัดเรียง 1837 01:20:03,510 --> 01:20:04,810 มันจะช่วยให้คุณประหยัดเวลา 1838 01:20:04,810 --> 01:20:07,670 แล้วอีกครั้งในขณะที่เรากล่าวว่าถ้า คุณกำลังลงในภูมิภาคท​​ี่ลดลงนี้ 1839 01:20:07,670 --> 01:20:09,480 มันไม่ได้ทำให้ว่า แตกต่างกันมาก 1840 01:20:09,480 --> 01:20:11,360 คุณจะได้รับถึงหลายพัน และหลายพันของปัจจัยการผลิต 1841 01:20:11,360 --> 01:20:13,318 แน่นอนคุณต้องการ อัลกอริทึมที่มีประสิทธิภาพมากขึ้น 1842 01:20:13,318 --> 01:20:14,730 1843 01:20:14,730 --> 01:20:19,400 และอีกครั้งตารางที่น่ารักของเราทุกคน ทุกประเภทที่พวกคุณเรียนรู้วันนี้ 1844 01:20:19,400 --> 01:20:21,157 >> ดังนั้นผมรู้ว่ามันเป็นวันที่มีความหนาแน่นสูง 1845 01:20:21,157 --> 01:20:23,490 นี้ไม่จำเป็นต้องไป ที่จะช่วยให้คุณมี pset ของคุณ 1846 01:20:23,490 --> 01:20:28,250 แต่ผมเพียงต้องการที่จะทำให้การปฏิเสธ ส่วนที่ไม่ได้เป็นเพียงเกี่ยวกับ psets 1847 01:20:28,250 --> 01:20:31,240 วัสดุทั้งหมดนี้เป็นธรรม เกมสำหรับ midterms ของคุณ 1848 01:20:31,240 --> 01:20:35,430 และถ้าคุณทำต่อเมื่อมี CS, เหล่านี้เป็นปัจจัยพื้นฐานที่สำคัญจริงๆ 1849 01:20:35,430 --> 01:20:37,870 ที่คุณจะต้องรู้ 1850 01:20:37,870 --> 01:20:41,700 ดังนั้นบางวันจะมี เล็ก ๆ น้อย ๆ pset ความช่วยเหลือเพิ่มเติม 1851 01:20:41,700 --> 01:20:44,600 แต่บางสัปดาห์จะเป็น เนื้อหาที่เกิดขึ้นจริงมากขึ้น 1852 01:20:44,600 --> 01:20:46,600 ที่ไม่อาจดูเหมือนซุปเปอร์ เป็นประโยชน์กับคุณในขณะนี้ 1853 01:20:46,600 --> 01:20:51,215 แต่ผมสัญญาว่าถ้าคุณยังคง ที่จะมีมากมีประโยชน์มาก 1854 01:20:51,215 --> 01:20:52,560 1855 01:20:52,560 --> 01:20:54,250 >> ดังนั้นที่มันสำหรับส่วน 1856 01:20:54,250 --> 01:20:55,250 ลงไปที่ลวด 1857 01:20:55,250 --> 01:20:56,570 ฉันไม่ได้ภายในหนึ่งนาที 1858 01:20:56,570 --> 01:20:58,262 1859 01:20:58,262 --> 01:20:58,970 แต่มีคุณไป 1860 01:20:58,970 --> 01:21:01,240 และฉันจะมีโดนัทหรือขนม 1861 01:21:01,240 --> 01:21:03,464 ใครแพ้ อะไรโดยวิธีการ? 1862 01:21:03,464 --> 01:21:05,307 1863 01:21:05,307 --> 01:21:05,890 ไข่และนม 1864 01:21:05,890 --> 01:21:08,120 ดังนั้นโดนัทเป็นหรือไม่? 1865 01:21:08,120 --> 01:21:09,400 1866 01:21:09,400 --> 01:21:10,160 ตกลง 1867 01:21:10,160 --> 01:21:10,770 สิทธิ์ทั้งหมด 1868 01:21:10,770 --> 01:21:12,120 ช็อคโกแลตหรือไม่? 1869 01:21:12,120 --> 01:21:12,620 ดาวกระจาย 1870 01:21:12,620 --> 01:21:13,837 1871 01:21:13,837 --> 01:21:14,670 คซีเป็นสิ่งที่ดี 1872 01:21:14,670 --> 01:21:15,170 ตกลง 1873 01:21:15,170 --> 01:21:17,045 เรากำลังจะมี ดาวกระจายในสัปดาห์หน้าแล้ว 1874 01:21:17,045 --> 01:21:18,240 นั่นคือสิ่งที่ฉันจะได้รับ 1875 01:21:18,240 --> 01:21:19,690 พวกคุณมีสัปดาห์ที่ยอดเยี่ยม 1876 01:21:19,690 --> 01:21:20,460 อ่านข้อมูลจำเพาะของคุณ 1877 01:21:20,460 --> 01:21:22,130 >> ให้ฉันรู้ว่าถ้าคุณมีคำถามใด ๆ 1878 01:21:22,130 --> 01:21:25,300 Pset สองเกรดที่ควรจะเป็น ให้กับคุณวันพฤหัสบดี 1879 01:21:25,300 --> 01:21:28,320 หากคุณมีคำถามใด ๆ เกี่ยวกับวิธีการที่ฉันอย่างช้า ๆ บางสิ่งบางอย่าง 1880 01:21:28,320 --> 01:21:32,250 หรือเหตุผลที่ผมจัดลำดับสิ่งที่วิธีที่ฉัน ไม่โปรดส่งอีเมลฉันมาพูดคุยกับผม 1881 01:21:32,250 --> 01:21:34,210 ฉันบ้านี้เล็ก ๆ น้อย ๆ สัปดาห์ แต่ผมสัญญาว่า 1882 01:21:34,210 --> 01:21:36,340 ฉันจะยังคงตอบกลับภายใน 24 ชั่วโมง 1883 01:21:36,340 --> 01:21:38,240 เพื่อให้มีความยิ่งใหญ่ในสัปดาห์ทุกคน 1884 01:21:38,240 --> 01:21:40,090 โชคดีใน pset ของคุณ 1885 01:21:40,090 --> 01:21:41,248