1 00:00:00,000 --> 00:00:07,270 2 00:00:07,270 --> 00:00:10,390 >> MARK GROZEN-SMITH: Hi, Mwen Mak Grozen-Smith, e sa se Quicksort. 3 00:00:10,390 --> 00:00:13,520 Jis tankou sòt ensèsyon ak ti wonn sòt, Quicksort se yon algorithm pou 4 00:00:13,520 --> 00:00:15,720 Fouye yon lis oswa yon etalaj de bagay sa yo. 5 00:00:15,720 --> 00:00:19,080 Pou senplisite, se pou yo asime ke moun ki bagay sa yo yo se jis nonb antye relatif, men 6 00:00:19,080 --> 00:00:22,060 konnen ke Quicksort ap travay pou pi plis pase jis chif yo. 7 00:00:22,060 --> 00:00:24,720 QuickStart se yon ti jan pi konplike pase ensèsyon oswa ti wonn, men li la 8 00:00:24,720 --> 00:00:27,560 tou pi plis efikas nan pifò ka. 9 00:00:27,560 --> 00:00:28,150 Tann yon dezyèm fwa. 10 00:00:28,150 --> 00:00:30,760 Èske li jis di "ki pi ka yo, "pa" tout "? 11 00:00:30,760 --> 00:00:31,710 Enteresan, pa gen okenn. 12 00:00:31,710 --> 00:00:33,560 Se pa tout ka yo se menm bagay la. 13 00:00:33,560 --> 00:00:36,650 pa enkyete sou detay sa a si ou pa gen pou wè gwo notasyon O ankò, men 14 00:00:36,650 --> 00:00:39,730 Quicksort se yon O (n okib) algorithm nan pi move, jis tankou 15 00:00:39,730 --> 00:00:41,430 ensèsyon oswa sòt ti wonn. 16 00:00:41,430 --> 00:00:44,950 Sepandan, li tipikman aji pi plis tankou yon fin vye granmoun analòg m algorithm. 17 00:00:44,950 --> 00:00:45,750 Pou ki sa? 18 00:00:45,750 --> 00:00:46,810 Nou pral jwenn tounen nan ki pita. 19 00:00:46,810 --> 00:00:49,610 Men, pou kounye a, kite yo jis aprann ki jan Quicksort travay. 20 00:00:49,610 --> 00:00:53,080 >> Se konsa, kite a mache nan Quicksorting sa a etalaj de nonb antye relatif soti nan pi piti 21 00:00:53,080 --> 00:00:54,260 rive pi gran. 22 00:00:54,260 --> 00:01:00,110 Isit la nou gen nonm antye relatif yo, 6, 5, 1, 3, 8, 4, 7, 9, ak 2. 23 00:01:00,110 --> 00:01:03,480 Premyèman, nou chwazi eleman final la nan etalaj sa a - nan ka sa a, de - 24 00:01:03,480 --> 00:01:06,870 epi rele ke "pivot la." Apre sa, nou kòmanse fè yon gade nan de bagay sa yo - 25 00:01:06,870 --> 00:01:10,220 yon sèl, endèks la ki pi ba, ki mwen pral refere yo kòm rete a dwat a 26 00:01:10,220 --> 00:01:13,970 miray ranpa a nan, ak, de, leftmost a eleman, ki mwen pral rele "aktyèl la 27 00:01:13,970 --> 00:01:17,260 eleman. "Ki sa nou pral fè se gade tout lòt eleman yo, lòt 28 00:01:17,260 --> 00:01:20,930 pase pivot la, li mete tout eleman ki ki pi piti pase pivot a nan 29 00:01:20,930 --> 00:01:24,140 rete nan miray la ak tout moun sa yo pi gwo pase pivot a nan 30 00:01:24,140 --> 00:01:25,570 dwat Bondye ki gen miray la. 31 00:01:25,570 --> 00:01:29,560 Lè sa a, finalman, nou pral lage pivot la dwa sou epi miray ranpa lavil yo mete l 'ant 32 00:01:29,560 --> 00:01:32,970 tout nimewo yo ki pi piti pase sa li ak tout nimewo yo ki pi gwo. 33 00:01:32,970 --> 00:01:34,460 >> Se konsa, kite a fè sa. 34 00:01:34,460 --> 00:01:38,540 Ranmase 2 a, mete miray lavil la nan la kòmanse, epi rele 6 "aktyèl la nan 35 00:01:38,540 --> 00:01:41,590 eleman. "Se konsa, nou vle gade nan eleman aktyèl nou an, 6 la. 36 00:01:41,590 --> 00:01:44,200 E depi li nan pi gwo pase a 2, nou kite l 'gen yo nan 37 00:01:44,200 --> 00:01:45,610 dwat Bondye ki gen miray la. 38 00:01:45,610 --> 00:01:48,980 Lè sa a, nou deplase sou gade nan 5 an kòm nou kounye a eleman ak wè ke sa a 39 00:01:48,980 --> 00:01:51,840 se, ankò, pi gwo pase pivot a, se konsa nou kite li kote li se sou bò dwat la 40 00:01:51,840 --> 00:01:53,190 bò nan miray la. 41 00:01:53,190 --> 00:01:53,880 Nou deplase sou. 42 00:01:53,880 --> 00:01:56,750 Eleman aktyèl nou se kounye a 1, ak - o. 43 00:01:56,750 --> 00:01:58,030 Sa a se diferan kounye a. 44 00:01:58,030 --> 00:02:00,890 Eleman ki la kounye a se kounye a pi piti pase pivot a, se konsa nou vle mete l ' 45 00:02:00,890 --> 00:02:02,570 nan kite nan miray la. 46 00:02:02,570 --> 00:02:06,555 Pou fè sa, kite yo jis chanje a kounye a eleman ak endèks la ki pi ba 47 00:02:06,555 --> 00:02:07,970 chita jis sou bò dwat la nan miray la. 48 00:02:07,970 --> 00:02:14,050 49 00:02:14,050 --> 00:02:17,570 Koulye a, nou deplase miray ranpa a nan moute yon sèl endèks Se konsa, 1 a se sou bò gòch la 50 00:02:17,570 --> 00:02:19,750 bò nan miray ranpa a nan kounye a. 51 00:02:19,750 --> 00:02:20,310 >> Rete tann. 52 00:02:20,310 --> 00:02:23,450 Mwen jis mele eleman yo sou la dwa bò nan miray la, pa t 'mwen menm? 53 00:02:23,450 --> 00:02:23,890 pa enkyete. 54 00:02:23,890 --> 00:02:24,930 Sa a amann. 55 00:02:24,930 --> 00:02:27,570 Bagay la sèlman nou pran swen sou pou kounye a se ke tout eleman sa yo nan 56 00:02:27,570 --> 00:02:29,570 dwat Bondye ki gen miray ranpa a nan yo se pi gwo pase pivot la. 57 00:02:29,570 --> 00:02:31,760 Pa gen okenn lòd aktyèl sipoze ankò. 58 00:02:31,760 --> 00:02:33,200 >> Koulye a, tounen nan klasman. 59 00:02:33,200 --> 00:02:35,840 Se konsa, nou kontinye sou gade nan rès la nan eleman yo. 60 00:02:35,840 --> 00:02:39,075 Apre sa, nan ka sa a, nou wè ke gen pa gen okenn lòt eleman pi piti pase nan 61 00:02:39,075 --> 00:02:42,100 pivot, se konsa nou kite yo tout sou bò dwat la nan miray la. 62 00:02:42,100 --> 00:02:45,980 Finalman, nou jwenn yo eleman aktyèl la ak wè ke li se pivot la. 63 00:02:45,980 --> 00:02:48,830 Koulye a, sa vle di nou gen de seksyon nan etalaj la, yo te nan premye 64 00:02:48,830 --> 00:02:51,820 ti sou pivot a ak sou bò gòch la nan miray la, ak dezyèm ke yo te nan 65 00:02:51,820 --> 00:02:54,500 pi gwo pase pivot a nan dwa bò nan miray la. 66 00:02:54,500 --> 00:02:57,040 Nou vle mete eleman ki Thorne ant de a, ak Lè sa a, nou pral konnen 67 00:02:57,040 --> 00:03:01,000 ki Thorne an se nan dwa li final tri plas li. 68 00:03:01,000 --> 00:03:04,980 Se konsa, nou chanje eleman nan premye sou la dwa bò nan miray la ak Thorne an, 69 00:03:04,980 --> 00:03:06,410 e nou konnen pivot la nan yon pozisyon dwat li yo. 70 00:03:06,410 --> 00:03:11,130 71 00:03:11,130 --> 00:03:15,650 >> Nou Lè sa a, repete pwosesis sa a pou la subarrays kite la ak dwa nan pivot la. 72 00:03:15,650 --> 00:03:18,700 Depi dènye subarray a se sèlman yon sèl eleman lontan, nou konnen sa a, se deja 73 00:03:18,700 --> 00:03:22,480 tri paske ki jan ou ka gen soti nan lòd si w ap sèlman yon sèl eleman? 74 00:03:22,480 --> 00:03:28,860 Pou bò dwat la nan subarray a, nou wè ke pivot a se 5, ak miray ranpa a 75 00:03:28,860 --> 00:03:32,250 se jis rete nan 6 la. 76 00:03:32,250 --> 00:03:34,970 Apre sa, eleman aktyèl la tou kòmanse deyò tankou 6 la. 77 00:03:34,970 --> 00:03:36,200 Se konsa, 6, pi konsekan pase 5. 78 00:03:36,200 --> 00:03:38,590 Nou kite li kote li se sou la dwa bò nan miray la. 79 00:03:38,590 --> 00:03:41,060 Koulye a, k ap deplase sou li a, 3 se mwens pase 5. 80 00:03:41,060 --> 00:03:44,160 Se konsa, nou chanje li ak eleman nan premye jis dwa nan miray la. 81 00:03:44,160 --> 00:03:47,944 82 00:03:47,944 --> 00:03:50,750 Koulye a, mwen te deplase miray ranpa a nan moute yon sèl. 83 00:03:50,750 --> 00:03:53,010 Koulye a, deplase sou a 8 an. 84 00:03:53,010 --> 00:03:56,480 8 ki pi gran pase 5, Se konsa nou kite li. 85 00:03:56,480 --> 00:03:58,720 4 a se mwens pase 5, se konsa nou chanje li. 86 00:03:58,720 --> 00:04:02,950 87 00:04:02,950 --> 00:04:03,570 Yo, epi sou. 88 00:04:03,570 --> 00:04:04,820 Yo, epi sou. 89 00:04:04,820 --> 00:04:10,190 90 00:04:10,190 --> 00:04:13,670 >> Chak fwa nou repete pwosedi an sou la kote kite la ak dwa nan etalaj la. nou 91 00:04:13,670 --> 00:04:17,010 chwazi yon pivot epi fè konparezon yo ak kreye yon lòt nivo nan kite ak 92 00:04:17,010 --> 00:04:18,240 subarrays dwat. 93 00:04:18,240 --> 00:04:21,500 Sa a rele repetitif yo ap kontinye jouk nou rive nan fen an lè nou te gen 94 00:04:21,500 --> 00:04:25,290 divize moute etalaj la an jeneral nan jis subarrays longè 1. 95 00:04:25,290 --> 00:04:28,060 Soti nan la, nou konnen se etalaj la klase paske chak eleman gen, nan 96 00:04:28,060 --> 00:04:29,330 kèk pwen, te yon pivot. 97 00:04:29,330 --> 00:04:32,720 Nan lòt mo, pou chak eleman yo, tout chif yo sou bò goch la se pi piti 98 00:04:32,720 --> 00:04:36,420 valè ak tout nimewo yo nan la dwa gen plis valè. 99 00:04:36,420 --> 00:04:38,980 >> Metòd sa a ap travay trè byen si la valè de pivot a chwazi a se 100 00:04:38,980 --> 00:04:41,930 apeprè nan mitan an ran de lis valè yo. 101 00:04:41,930 --> 00:04:45,630 Sa a ta vle di ke, apre yo fin nou avanse eleman alantou li, gen sou kòm anpil 102 00:04:45,630 --> 00:04:48,390 eleman nan kite nan pivot la kòm gen sou bò dwat la. 103 00:04:48,390 --> 00:04:52,380 Ak nati a divize-ak-konkeri nan la Se Quicksort algorithm Lè sa a, pran 104 00:04:52,380 --> 00:04:53,850 anpil avantaj de. 105 00:04:53,850 --> 00:04:57,500 Sa vin kreye yon ègzekutabl nan O (n ale n,) n la paske nou dwe fè n mwens 1 106 00:04:57,500 --> 00:05:01,640 konparezon sou chak moun k'ap viv koulye ak boutèy n paske nou gen divize lis la 107 00:05:01,640 --> 00:05:03,210 louvri sesyon fwa n. 108 00:05:03,210 --> 00:05:06,160 Sepandan, nan ka yo pi mal, sa a algorithm ka aktyèlman ap O (n 109 00:05:06,160 --> 00:05:09,850 okib.) Sipoze sou chak jenerasyon, pivot a jis pou k ap pase yo nan 110 00:05:09,850 --> 00:05:12,520 pi piti oswa pi gwo a nan la nimewo nou ap klasman. 111 00:05:12,520 --> 00:05:15,870 Sa ta vle di kraze desann lis la n fwa, epi li fè n mwens 1 112 00:05:15,870 --> 00:05:17,690 konparezon chak fwa sèl. 113 00:05:17,690 --> 00:05:20,490 Se konsa, o nan n okib. 114 00:05:20,490 --> 00:05:22,000 >> Ki jan nou ka amelyore metòd la? 115 00:05:22,000 --> 00:05:25,100 Yon bon fason yo amelyore metòd la se nan koupe desann sou pwobabilite ki genyen pou 116 00:05:25,100 --> 00:05:28,150 ègzekutabl a se tout tan tout tan aktyèlman o nan n okib. 117 00:05:28,150 --> 00:05:31,860 Sonje sa a pi move, senaryo ka pi mal ka sèlman rive lè a 118 00:05:31,860 --> 00:05:35,320 pivot chwazi se toujou pi wo a oswa ki pi ba valè nan etalaj la. 119 00:05:35,320 --> 00:05:38,630 Pou asire sa a se mwens chans rive, nou ka jwenn pivot a pa 120 00:05:38,630 --> 00:05:42,610 w ap chwazi eleman miltip ak pran valè medyàn. 121 00:05:42,610 --> 00:05:44,650 >> Non mwen se Mak Grozen-Smith, ak sa a se CS50. 122 00:05:44,650 --> 00:05:47,790 123 00:05:47,790 --> 00:05:50,930 >> Pou senplisite, se pou yo asime ke moun ki bagay sa yo yo se jis nonb antye relatif, men 124 00:05:50,930 --> 00:05:51,970 konnen ke Quicksert - 125 00:05:51,970 --> 00:05:53,160 Quicksert? 126 00:05:53,160 --> 00:05:55,200 M regrèt. 127 00:05:55,200 --> 00:06:02,000 >> Isit la nou gen nonm antye relatif yo , 6, 5, 1, 3, 8, 4, 9. 128 00:06:02,000 --> 00:06:03,200 >> Oratè 1: Vrèman? 129 00:06:03,200 --> 00:06:04,850 >> Oratè 2: pa sispann la. 130 00:06:04,850 --> 00:06:06,100 >> Oratè 1: Vrèman? 131 00:06:06,100 --> 00:06:08,491