1 00:00:00,000 --> 00:00:07,270 2 00:00:07,270 --> 00:00:10,390 >> MARK Grozen-SMITH: Hi, I Mark deyiləm -Smith Grozen və bu QuickSort edir. 3 00:00:10,390 --> 00:00:13,520 Just durub sort və bubble kimi sort, QuickSort üçün alqoritm 4 00:00:13,520 --> 00:00:15,720 Bir siyahı və ya şeyi bir sıra çeşidlənməsi. 5 00:00:15,720 --> 00:00:19,080 Sadəlik üçün, güman edək ki, o hər şeyi yalnız integers, lakin 6 00:00:19,080 --> 00:00:22,060 QuickSort üçün çalışır ki, bilirik yalnız nömrələri daha çox. 7 00:00:22,060 --> 00:00:24,720 Quickstart bir az daha mürəkkəbdir daha durub və ya bubble, lakin bu 8 00:00:24,720 --> 00:00:27,560 həmçinin daha səmərəli əksər hallarda. 9 00:00:27,560 --> 00:00:28,150 Ikinci gözləyin. 10 00:00:28,150 --> 00:00:30,760 O, yalnız "ən demək idi hallarda "deyil" bütün "? 11 00:00:30,760 --> 00:00:31,710 Maraqlıdır ki, no. 12 00:00:31,710 --> 00:00:33,560 Bütün hallarda eynidir. 13 00:00:33,560 --> 00:00:36,650 Bu ətraflı haqqında narahat olmayın siz əgər hələ böyük O notation gördük, amma deyil 14 00:00:36,650 --> 00:00:39,730 QuickSort bir O (n kvadrat) alqoritm edir ən pis halda, yalnız kimi 15 00:00:39,730 --> 00:00:41,430 durub və ya bubble sırala. 16 00:00:41,430 --> 00:00:44,950 Lakin, adətən daha çox çıxış köhnə analog m alqoritmi kimi. 17 00:00:44,950 --> 00:00:45,750 Niyə? 18 00:00:45,750 --> 00:00:46,810 Biz sonra geri almaq lazımdır. 19 00:00:46,810 --> 00:00:49,610 Amma indi üçün, yalnız öyrənmək bildirin QuickSort işləri necə. 20 00:00:49,610 --> 00:00:53,080 >> Belə ki, bu Quicksorting vasitəsilə gəzmək imkan kiçik olan integers array 21 00:00:53,080 --> 00:00:54,260 ən böyük. 22 00:00:54,260 --> 00:01:00,110 Burada biz integers 6 var 5, 1, 3, 8, 4, 7, 9, və 2. 23 00:01:00,110 --> 00:01:03,480 Birincisi, biz final element pick Bu array - bu halda, iki - 24 00:01:03,480 --> 00:01:06,870 və ki, "mil". zəng Sonra, biz iki şeyi baxmaq başlamaq - 25 00:01:06,870 --> 00:01:10,220 , mən istinad bilərsiniz ən aşağı index, hüququnun olma kimi 26 00:01:10,220 --> 00:01:13,970 divar, və, iki, leftmost Mən "cari zəng lazımdır element, 27 00:01:13,970 --> 00:01:17,260 element. "Biz nə olacaq edir digər bütün digər elementləri baxmaq 28 00:01:17,260 --> 00:01:20,930 mil daha və bütün elementləri qoymaq na mil daha kiçik 29 00:01:20,930 --> 00:01:24,140 divar sol və bütün bu na mil daha böyük 30 00:01:24,140 --> 00:01:25,570 divar hüququ. 31 00:01:25,570 --> 00:01:29,560 Sonra, nəhayət, biz mil düşmək lazımdır sağ arasında qoymaq üçün divar 32 00:01:29,560 --> 00:01:32,970 bu daha kiçik bütün nömrələri və bütün nömrələri böyük. 33 00:01:32,970 --> 00:01:34,460 >> Belə ki, bunu bildirin. 34 00:01:34,460 --> 00:01:38,540 2-up seçin, olan divar qoymaq başlayan və 6 "cari zəng 35 00:01:38,540 --> 00:01:41,590 element. "Beləliklə, biz baxmaq istəyirəm bizim cari element, 6. 36 00:01:41,590 --> 00:01:44,200 Və bu daha çox var-ci ildən 2, biz orada onu tərk 37 00:01:44,200 --> 00:01:45,610 divar hüququ. 38 00:01:45,610 --> 00:01:48,980 Sonra, biz 5-də baxmaq üçün hərəkət bizim cari element və bax ki, bu 39 00:01:48,980 --> 00:01:51,840 , yenidən, mil daha böyük, belə ki, biz o, sağ olduğu onu tərk 40 00:01:51,840 --> 00:01:53,190 divar yan. 41 00:01:53,190 --> 00:01:53,880 Biz hərəkət. 42 00:01:53,880 --> 00:01:56,750 Bizim cari element edir indi 1, və - oh. 43 00:01:56,750 --> 00:01:58,030 Bu indi fərqlidir. 44 00:01:58,030 --> 00:02:00,890 Cari element indi daha kiçik mil, biz onu qoymaq istəyirəm 45 00:02:00,890 --> 00:02:02,570 divar sol. 46 00:02:02,570 --> 00:02:06,555 Bunu etmək üçün, yalnız keçid edək ən aşağı göstərici ilə cari element 47 00:02:06,555 --> 00:02:07,970 yalnız divar sağ oturan. 48 00:02:07,970 --> 00:02:14,050 49 00:02:14,050 --> 00:02:17,570 İndi biz bir index up divar hərəkət belə ki, 1 sol 50 00:02:17,570 --> 00:02:19,750 indi divar yan. 51 00:02:19,750 --> 00:02:20,310 >> Gözləyin. 52 00:02:20,310 --> 00:02:23,450 Mən yalnız elementləri qarışdırılır divar sağ tərəfində, mən etmədi? 53 00:02:23,450 --> 00:02:23,890 Narahat olmayın. 54 00:02:23,890 --> 00:02:24,930 Ki, gözəl. 55 00:02:24,930 --> 00:02:27,570 Biz indi düşündüyüm tək şey ki, bütün bu elementlər 56 00:02:27,570 --> 00:02:29,570 divar sağ böyükdür mil daha. 57 00:02:29,570 --> 00:02:31,760 No faktiki sifariş hələ ehtimal edilir. 58 00:02:31,760 --> 00:02:33,200 >> İndi geri çeşidlənməsi. 59 00:02:33,200 --> 00:02:35,840 Beləliklə, biz baxaraq davam elementləri qalan. 60 00:02:35,840 --> 00:02:39,075 Və bu halda, biz var ki, bax Bu başqa elementləri az 61 00:02:39,075 --> 00:02:42,100 mil, belə ki, biz onları bütün tərk divar sağ. 62 00:02:42,100 --> 00:02:45,980 Nəhayət, biz cari element almaq və mil olduğunu görürük. 63 00:02:45,980 --> 00:02:48,830 İndi ki, biz iki o deməkdir ki, serialın ilk varlıq bölmələr 64 00:02:48,830 --> 00:02:51,820 mil və sol tərəfində kiçik divar və ikinci varlıq 65 00:02:51,820 --> 00:02:54,500 na mil daha böyük divar sağ. 66 00:02:54,500 --> 00:02:57,040 Biz arasında mil element qoymaq istəyirəm iki, sonra biz bilirsiniz 67 00:02:57,040 --> 00:03:01,000 mil onun hüququ var ki, final sorted yer. 68 00:03:01,000 --> 00:03:04,980 Beləliklə, biz ilk element keçid mil ilə divar sağ tərəfində, 69 00:03:04,980 --> 00:03:06,410 və biz bilirik mil nin onun sağ mövqeyində. 70 00:03:06,410 --> 00:03:11,130 71 00:03:11,130 --> 00:03:15,650 >> Biz sonra bu prosesi təkrar subarrays sol və mil hüququ. 72 00:03:15,650 --> 00:03:18,700 Son subarray yalnız biridir element uzun, biz artıq bilirik 73 00:03:18,700 --> 00:03:22,480 sorted necə ola bilər, çünki Siz yalnız bir element əgər sifariş? 74 00:03:22,480 --> 00:03:28,860 Bu subarray sağ, biz mil Wall 5 və bax ki, 75 00:03:28,860 --> 00:03:32,250 yalnız 6 qalıb. 76 00:03:32,250 --> 00:03:34,970 Və cari element də 6-kimi başlayır. 77 00:03:34,970 --> 00:03:36,200 Belə ki, 6 5 daha böyükdür. 78 00:03:36,200 --> 00:03:38,590 Bu olduğu biz onu tərk divar sağ. 79 00:03:38,590 --> 00:03:41,060 İndi hərəkət, 3 5-dən azdır. 80 00:03:41,060 --> 00:03:44,160 Beləliklə, biz ilk element ilə keçid divar sağ. 81 00:03:44,160 --> 00:03:47,944 82 00:03:47,944 --> 00:03:50,750 İndi mən bir qədər divar köçürülüb. 83 00:03:50,750 --> 00:03:53,010 İndi, 8 hərəkət. 84 00:03:53,010 --> 00:03:56,480 8, 5 daha çox və biz onu buraxın. 85 00:03:56,480 --> 00:03:58,720 4 az 5, belə ki, biz onu yandırın. 86 00:03:58,720 --> 00:04:02,950 87 00:04:02,950 --> 00:04:03,570 Və. 88 00:04:03,570 --> 00:04:04,820 Və. 89 00:04:04,820 --> 00:04:10,190 90 00:04:10,190 --> 00:04:13,670 >> Biz prosesi təkrar Hər dəfə Serialın sol və sağ tərəf. biz 91 00:04:13,670 --> 00:04:17,010 bir mil seçin və müqayisə etmək və sol bir səviyyədə yaratmaq və 92 00:04:17,010 --> 00:04:18,240 sağ subarrays. 93 00:04:18,240 --> 00:04:21,500 Bu recursive zəng qədər davam edəcək biz var zaman sona çatmaq 94 00:04:21,500 --> 00:04:25,290 daxil ümumi array up bölünür uzunluğu 1 yalnız subarrays. 95 00:04:25,290 --> 00:04:28,060 Oradan, biz array çeşidlənir bilirik hər element, çünki at 96 00:04:28,060 --> 00:04:29,330 bəzi point, bir mil olmuşdur. 97 00:04:29,330 --> 00:04:32,720 Başqa sözlə, hər bir element üçün, bütün sol ədəd az var 98 00:04:32,720 --> 00:04:36,420 dəyərlər və bütün nömrələri sağ böyük dəyərləri var. 99 00:04:36,420 --> 00:04:38,980 >> Bu üsul çox yaxşı işləyir, əgər seçilmiş fırlanma dəyəri 100 00:04:38,980 --> 00:04:41,930 təxminən ortasında siyahısı dəyərlərin üçündür. 101 00:04:41,930 --> 00:04:45,630 Biz hərəkət sonra bu, o deməkdir ki, kimi bir çox haqqında orada ətrafında elementləri, 102 00:04:45,630 --> 00:04:48,390 mil sol elementləri sağ var kimi. 103 00:04:48,390 --> 00:04:52,380 Və bu parçala və fəth təbiət QuickSort alqoritmi sonra qəbul edilir 104 00:04:52,380 --> 00:04:53,850 tam üstünlüyü. 105 00:04:53,850 --> 00:04:57,500 Bu O bir uzunluğu yaradır (n n log) biz nə üçün n minus 1 n çünki 106 00:04:57,500 --> 00:05:01,640 hər nəsil və log müqayisələr Biz siyahısı bölmək üçün n çünki 107 00:05:01,640 --> 00:05:03,210 n dəfə daxil. 108 00:05:03,210 --> 00:05:06,160 Lakin, ən pis hallarda, bu alqoritm həqiqətən O (n ola bilər 109 00:05:06,160 --> 00:05:09,850 kvadrat.) hər nəsil haqqında düşünək, mil yalnız belə ola olur 110 00:05:09,850 --> 00:05:12,520 kiçik və ya ən böyük biz çeşidlənməsi edirik ədəd. 111 00:05:12,520 --> 00:05:15,870 Bu siyahısını parçalayaraq deməkdir dəfə və edilməsi n minus 1 n 112 00:05:15,870 --> 00:05:17,690 müqayisələri hər bir zaman. 113 00:05:17,690 --> 00:05:20,490 Belə ki, n o kvadrat. 114 00:05:20,490 --> 00:05:22,000 >> Biz necə üsul inkişaf edə bilər? 115 00:05:22,000 --> 00:05:25,100 Üsulu yaxşılaşdırılması üçün yaxşı bir yoldur ehtimalı azaltmaq üçün 116 00:05:25,100 --> 00:05:28,150 uzunluğu heç əslində n o kvadrat. 117 00:05:28,150 --> 00:05:31,860 Bu pis, ən pis halda ssenari saxla yalnız baş verə bilər zaman 118 00:05:31,860 --> 00:05:35,320 seçilmiş mil həmişə ən yüksək və ya serialın ən aşağı dəyəri. 119 00:05:35,320 --> 00:05:38,630 Bu nə az ehtimal təmin etmək üçün, biz mil tapa bilərsiniz 120 00:05:38,630 --> 00:05:42,610 çox elementləri və seçilməsi orta dəyər alaraq. 121 00:05:42,610 --> 00:05:44,650 >> My name Mark Grozen-Smith edir və bu CS50 edir. 122 00:05:44,650 --> 00:05:47,790 123 00:05:47,790 --> 00:05:50,930 >> Sadəlik üçün, güman edək ki, o hər şeyi yalnız integers, lakin 124 00:05:50,930 --> 00:05:51,970 ki Quicksert bilirik - 125 00:05:51,970 --> 00:05:53,160 Quicksert? 126 00:05:53,160 --> 00:05:55,200 Üzr istəyirik. 127 00:05:55,200 --> 00:06:02,000 >> Burada integers var 6, 5, 1, 3, 8, 4, 9. 128 00:06:02,000 --> 00:06:03,200 >> HOPARLÖR 1: Həqiqətən? 129 00:06:03,200 --> 00:06:04,850 >> HOPARLÖR 2: orada dayandırmaq etməyin. 130 00:06:04,850 --> 00:06:06,100 >> HOPARLÖR 1: Həqiqətən? 131 00:06:06,100 --> 00:06:08,491