utkarsh2299 commited on
Commit
0a9e28d
·
verified ·
1 Parent(s): 09422f1

Upload 4 files

Browse files
.gitattributes CHANGED
@@ -33,3 +33,4 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
 
 
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
+ OrigVideo/Week3_Lecture4.mp4 filter=lfs diff=lfs merge=lfs -text
OrigVideo/Week3_Lecture4.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:c459397e7d3d1d58b69d7649b7254e73ecc9d4ff0f967e3eeaff5a458732568a
3
+ size 34824798
TTS_AUDIO/VTT/Week4_Lecture3_Cleaned_Tagged.ta.vtt ADDED
@@ -0,0 +1,496 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ WEBVTT
2
+
3
+ 00:00:02.246 --> 00:00:06.190
4
+ <DT>merge sort </DT> என்பது <DT>order</DT> <DNT>n log n</DNT> <DT>sorting algorithm</DT> என்று பார்த்தோம்.
5
+
6
+ 00:00:06.190 --> 00:00:10.509
7
+ ஆனால் இது சில குறைபாடுகளைக் கொண்டுள்ளது. இது சில நேரங்களில் <DT>impractical</DT> ஆகிறது.
8
+
9
+ 00:00:10.849 --> 00:00:14.740
10
+ முக்கிய பிரச்சனை என்னவென்றால், <DT>merging</DT> க்கு <DT>extra space</DT> தேவைப்படுகிறது.
11
+
12
+ 00:00:14.869 --> 00:00:19.076
13
+ <DT>recursion</DT> ஐ பயன்படுத்தாமல் <DT>implement merge sort </DT> செய்வது கடினம் என்பதையும் நாம் பார்த்தோம்.
14
+
15
+ 00:00:19.101 --> 00:00:22.108
16
+ மற்றும் <DT>recursion</DT> <DT>programming language</DT> ல் அதன் சொந்த செலவைக் கொண்டுள்ளது.
17
+
18
+ 00:00:24.841 --> 00:00:26.952
19
+ எனவே, <DT>space problem</DT> ஐ தீர்க்கலாம்.
20
+
21
+ 00:00:27.736 --> 00:00:33.310
22
+ <DT>merge function</DT> ஐ <DT>implement</DT> செய்யும் <DT>பொருட்டு</DT>, <DT>merge sort </DT> க்கு <DT>extra space</DT> தேவைப்படுகிறது.
23
+
24
+ 00:00:33.590 --> 00:00:38.500
25
+ நாம் ஏன் <DT>merge</DT> செய்ய வேண்டும்? நாம் <DT>merge</DT> செய்ய வேண்டியதன் காரணம், நாம் <DT>merge sort </DT> ஐ செய்யும்போது,
26
+
27
+ 00:00:38.500 --> 00:00:45.759
28
+ நம்மிடம் <DT>initial list</DT> உள்ளது. பின்னர் அதை இரண்டு பகுதிகளாக split செய்கிறோம். ஆனால், பொதுவாக <DT>left</DT> இலிருந்து <DT>items</DT> கள் இருக்கலாம்.
29
+
30
+ 00:00:45.759 --> 00:00:50.409
31
+ <DNT>right</DNT> இலிருந்து <DT>bigger than items</DT>. எனவே, <DT>instance</DT> ஆக நாம் சொன்னால்,
32
+
33
+ 00:00:50.450 --> 00:00:54.250
34
+ <DT>left</DT> ல் <DT>even numbers</DT> மற்றும் <DNT>right</DNT> ல் <DT>odd numbers</DT>.
35
+
36
+ 00:00:54.550 --> 00:00:58.900
37
+ இரண்டு பக்கங்களிலிருந்தும் <DT>numbers alternately</DT> எடுத்துக்கொண்டு <DT>merge</DT> செய்ய வேண்டும்.
38
+
39
+ 00:00:59.630 --> 00:01:09.646
40
+ <DT>divided problem</DT> ன் <DT>left</DT> பக்கத்தில் உள்ள அனைத்தும் <DT>divided problem</DT> ன் <DNT>வலது</DNT> பக்கத்தில் உள்ள அனைத்தையும் விட சிறியதாக இருக்கும்படி <DT>arrange</DT> செய்தால்,
41
+
42
+ 00:01:10.593 --> 00:01:12.146
43
+ பின்னர், நாம் அனைத்தையும் <DT>merge</DT> செய்ய தேவையில்லை.
44
+
45
+ 00:01:12.699 --> 00:01:18.130
46
+ மேலும் இது <DT>merge</DT> செய்வதற்கு, கூடுதல் space தேவைப்படும் <DT>problem</DT> ஐ தவிர்க்கலாம்.
47
+
48
+ 00:01:20.689 --> 00:01:23.702
49
+ <DT>merge</DT> இல்லாமல் எப்படி <DT>divide</DT> மற்றும் <DT>conquer</DT> செய்வது.
50
+
51
+ 00:01:25.243 --> 00:01:27.659
52
+ <DT>median value</DT> நமக்குத் தெரியும் என்று வைத்துக்கொள்வோம்.
53
+
54
+ 00:01:27.659 --> 00:01:33.716
55
+ ஒரு <DT>set</DT> ல் உள்ள <DT>median value</DT> என்பது <DT>half</DT> the <DT>elements</DT> are <DT>smaller than half</DT> are <DT>bigger</DT> ஆக இருக்கும் <DT>value</DT> என்பதை நினைவில் கொள்ளுங்கள்.
56
+
57
+ 00:01:35.649 --> 00:01:42.124
58
+ <DT>median</DT> விட <DT>smaller than</DT> <DT>values</DT> அனைத்தையும் <DT>left half</DT> க்கும், <DT>median</DT> விட <DT>bigger than</DT> அனைத்தையும் <DNT>right half</DNT> க்கும் நகர்த்தலாம்.
59
+
60
+ 00:01:43.883 --> 00:01:52.180
61
+ நாம் பார்ப்பது போல, <DT>list</DT> ன் <DT>length</DT> க்கு <DT>time proportional</DT> ஆக புதிய <DT>array</DT> வை உருவாக்காமல் இதைச் செய்யலாம்.
62
+
63
+ 00:01:53.816 --> 00:02:00.989
64
+ இந்த <DT>rearrangement</DT> ஐ செய்த பிறகு, அனைத்து <DT>smaller values</DT> களையும் <DT>left half</DT> க்கும் <DT>bigger values</DT> களை <DNT>right half</DNT> க்கும் நகர்த்தவும்.
65
+
66
+ 00:02:00.989 --> 00:02:06.443
67
+ இந்த <DT>divide</DT> மற்றும் <DT>conquer strategy</DT> ஐ நாம் <DT>recursively</DT> பயன்படுத்தலாம். மேலும் <DNT>right</DNT> மற்றும் <DT>left half</DT> ஐ தனித்தனியாக <DT>sort</DT> செய்யலாம்.
68
+
69
+ 00:02:07.519 --> 00:02:12.520
70
+ மேலும் <DT>left half</DT> ல் உள்ள அனைத்தும், <DNT>right half</DNT> ல் உள்ள அனைத்தையும் விட <DT>சிறியது</DT> என்று நாம் உத்தரவாதம் அளித்துள்ளோம்.
71
+
72
+ 00:02:13.019 --> 00:02:17.050
73
+ இது தானாகவே இதற்கு அர்த்தம் <DT>divide</DT> மற்றும் <DT>conquer</DT> step க்கு பிறகு,
74
+
75
+ 00:02:17.050 --> 00:02:24.442
76
+ <DT>left half</DT> ஏற்கனவே <DNT>right half</DNT> க்கு கீழே இருப்பதால், non-trivial முறையில் answers களை combine செய்ய வேண்டிய அவசியமில்லை. நாம் <DT>merge</DT> செய்ய தேவையில்லை.
77
+
78
+ 00:02:28.309 --> 00:02:34.210
79
+ இந்த <DT>strategy</DT> ஐ பயன்படுத்தினால், <DT>merge sort </DT> போன்ற ஒரு <DT>recursive equation</DT> ஐ பெறுவோம்.
80
+
81
+ 00:02:34.210 --> 00:02:42.370
82
+ <DNT>length n</DNT> இன் <DT>list</DT> ஐ <DT>sort</DT> செய்வதற்கு <DT>time</DT> தேவைப்படும். முதலில் <DNT>size n</DNT> இன் இரண்டு <DT>lists</DT> களை 2 ஆல் <DT>sort</DT> செய்ய வேண்டும்.
83
+
84
+ 00:02:42.370 --> 00:02:50.039
85
+ நாம் <DNT>order n </DNT> ஐ செய்வோம் <DT>merging</DT> ஆக அல்ல. <DT>list</DT> ஐ <DT>decompose</DT> செய்வதற்காக. அதனால் அனைத்து <DT>smaller values</DT> களும் <DT>left</DT> மற்றும் <DNT>right</DNT> இல் இருக்கும்.
86
+
87
+ 00:02:50.064 --> 00:02:54.483
88
+ நாம் <DT>recursive step</DT> செய்வதற்கு முன் rearranging <DT>step</DT> <DNT>order n</DNT> ஆகும்.
89
+
90
+ 00:02:54.508 --> 00:02:57.879
91
+ அதேசமயம் <DT>merge</DT> என்பது <DT>recursive step</DT> க்கு பின் வரும் <DT>step</DT> ஆகும்.
92
+
93
+ 00:02:57.879 --> 00:03:03.879
94
+ இது முந்தைய <DT>case</DT> ல் <DNT>order n</DNT> ஆக இருந்தது. ஆனால் நாம் <DT>recurrence</DT> ஐ <DT>solve</DT>செய்தால் அதே ஒன்றுதான். நமக்கு மற்றொரு <DNT>order n log n algorithm</DNT> கிடைக்கும்.
95
+
96
+ 00:03:08.730 --> 00:03:12.340
97
+ இந்த <DT>approach</DT> இல் பெரிய <DT>bottleneck</DT> என்னவென்றால் <DT>median</DT> ஐ கண்டறிவதாகும்.
98
+
99
+ 00:03:13.190 --> 00:03:20.663
100
+ ஒரு <DT>list</DT> ஐ <DT>sorting</DT> செய்வதன் நன்மைகளில் ஒன்று, <DT>sorting</DT> க்கு பின் <DT>median</DT> ஐ middle <DT>element</DT> ஆக நாம் அடையாளம் காணலாம் என்பதை நினைவில் கொள்ளுங்கள்.
101
+
102
+ 00:03:21.890 --> 00:03:24.336
103
+ இப்போது, இங்கே நாம் <DT>sorting</DT> செய்வதற்கு முன் <DT>median</DT> ஐ கேட்கிறோம்.
104
+
105
+ 00:03:24.996 --> 00:03:28.539
106
+ ஆனால், நமது நோக்கம் <DT>sort</DT> செய்வது. அது <DT>paradoxical</DT> ஆகும்.
107
+
108
+ 00:03:28.539 --> 00:03:33.219
109
+ <DT>sorting</DT>ன் <DT>output</DT> <DT>sorting</DT> ஆன <DT>input</DT> ஆக இருக்க வேண்டும் என நாம் விரும்பினால்.
110
+
111
+ 00:03:34.892 --> 00:03:42.580
112
+ எனவே, <DT>list</DT> ஐ <DNT>split</DNT> செய்து <DT>element</DT> ன் மிகவும் எளிமையான தேர்வு மூலம் <DT>strategy</DT> யை முயற்சிக்க வேண்டும் என்பதே இதன் பொருள்.
113
+
114
+ 00:03:42.825 --> 00:03:46.780
115
+ <DT>median</DT> ஐ தேடுவதற்குப் பதிலாக, <DNT>list A</DNT> இல் சில <DT>value</DT> ஐ பெறுவோம்.
116
+
117
+ 00:03:46.780 --> 00:03:49.689
118
+ மற்றும் <DT>pivot element</DT> என அழைக்கப்படுவதைப் பயன்படுத்தவும்.
119
+
120
+ 00:03:49.689 --> 00:03:56.769
121
+ இந்த <DT>pivot</DT> ஐ பொறுத்து <DNT>A</DNT> என்று பிரிக்கிறோம். இதனால் அனைத்து <DT>smaller elements</DT> களும் <DT>left</DT> ஆகவும், <DT>bigger elements</DT> கள் ��னைத்தும் <DNT>right</DNT> ஆகவும் இருக்கும்.
122
+
123
+ 00:04:00.223 --> 00:04:11.636
124
+ இந்த <DT>algorithm</DT> <DT>quick sort</DT> என்று அழைக்கப்படுகிறது. இது 1960 களில் <DT>Tony Four</DT> என்ற நபரால் கண்டுபிடிக்கப்பட்டது மற்றும் இது மிகவும் பிரபலமான <DT>sorting algorithms</DT> களில் ஒன்றாகும்.
125
+
126
+ 00:04:12.103 --> 00:04:16.082
127
+ பொதுவாக <DT>array</DT> இன் <DT>list</DT> ல் முதல் <DT>element</DT> ஆக இருக்கும் <DT>pivot element</DT> ஐ தேர்வு செய்கிறோம்.
128
+
129
+ 00:04:16.759 --> 00:04:22.500
130
+ இந்த <DT>pivot</DT> இன் முடிவைப் பொறுத்து <DT>lower part</DT> லும் <DT>upper part</DT> லும் <DNT>partition A</DNT> செய்கிறோம்.
131
+
132
+ 00:04:22.500 --> 00:04:24.943
133
+ எனவே, அனைத்து <DT>smaller elements</DT> களையும் <DT>left</DT> க்கு நகர்த்துகிறோம்.
134
+
135
+ 00:04:25.056 --> 00:04:28.149
136
+ மற்றும் அனைத்து <DT> bigger elements</DT> முதல் <DNT>right</DNT> வரை <DT>pivotal</DT> தேர்வைப் பொறுத்து.
137
+
138
+ 00:04:29.523 --> 00:04:34.163
139
+ இரண்டிற்கும் இடையே <DT>pivot</DT> வருவதை உறுதிசெய்கிறோம். ஏனெனில் <DT>array</DT> ல் முதல் <DT>element</DT> <DT>pivot</DT> ஆக எடுத்துள்ளோம்.
140
+
141
+ 00:04:34.190 --> 00:04:41.036
142
+ இதற்குப் பிறகு நாம் அதை <DT>lower</DT> மற்றும் <DT>upper bound</DT> க்கு இடையில் உள்ள <DT>center</DT> க்கு நகர்த்த விரும்புகிறோம். பின்னர், இரண்டு <DT>partitions</DT> களை <DT>recursively sort</DT> செய்கிறோம்.
143
+
144
+ 00:04:44.456 --> 00:04:48.910
145
+ ஒரு பொதுவான <DT>list</DT> ல் <DT>quick sort</DT> எவ்வாறு வேலை செய்யும் என்பது பற்றிய <DT>high level view</DT> இங்கே உள்ளது.
146
+
147
+ 00:04:48.910 --> 00:04:56.143
148
+ இது தான் நமது <DT>list</DT> என்று வைத்துக்கொள்வோம். <DT>list</DT> ன் தொடக்கத்தை <DT>pivot element</DT> ஆக முதல் <DT>element</DT> ஐ அடையாளம் காண்போம்.
149
+
150
+ 00:04:56.950 --> 00:05:01.569
151
+ இப்போது, மீதமுள்ள <DT>elements</DT> களில், எந்த <DNT>ones</DNT> <DT>smaller</DT> மற்றும் எந்த <DNT>ones</DNT> <DT>bigger</DT> என்பதைக் கண்டுபிடிக்க வேண்டும்.
152
+
153
+ 00:05:02.410 --> 00:05:11.510
154
+ இதை எப்படிச் செய்வோம் என்று சொல்லாமல், 32, 22 மற்றும் 13 ஆகிய மூன்று <DT>elements</DT> களை <DT>smaller</DT> ஆகவும் <DNT>yellow</DNT> ல் <DT>marked </DT> செய்யபட்டதாகவும் அடையாளப்படுத்துகிறோம்.
155
+
156
+ 00:05:11.810 --> 00:05:15.069
157
+ மற்றும் <DNT>green</DNT> இல் <DT>marked </DT> செய்யப்பட்ட மற்ற 4 <DT>elements</DT> கள் பெரியவை.
158
+
159
+ 00:05:16.160 --> 00:05:20.040
160
+ முதல் <DT>step</DT> உண்மையில் இந்த <DT>criterion</DT> ஐ பொறுத்து <DT>partition</DT> செய்ய வேண்டும்.
161
+
162
+ 00:05:20.040 --> 00:05:24.810
163
+ நாம் இந்த <DT>elements</DT> களை நகர்த்த வேண்டும். அதனால் அவை இரண்டு <DT>blocks</DT> ஆக வரும்.
164
+
165
+ 00:05:24.810 --> 00:05:27.550
166
+ அந்த 13, 32 மற்றும் 22 <DT>left</DT> பக்கம் வரும்.
167
+
168
+ 00:05:27.550 --> 00:05:33.430
169
+ 63 57, 91 மற்றும் 78, <DNT>right</DNT> மற்றும் <DT>pivot element</DT> 43 <DT>middle</DT> ல் வருகிறது.
170
+
171
+ 00:05:33.947 --> 00:05:36.781
172
+ இது <DT>rearranging step</DT> மற்றும் இப்போது
173
+
174
+ 00:05:37.060 --> 00:05:41.529
175
+ நாம் <DNT>yellow bits</DNT> மற்றும் <DNT>green bits</DNT> ஆகியவற்றை <DT>recursively sort</DT> செய்வோம். பிறகு அதைச் செய்யலாம் என்று கருதினால்,
176
+
177
+ 00:05:41.529 --> 00:05:45.480
178
+ நம்மிடம் ஒரு <DT>sorted array</DT> உள்ளது மற்றும் அனைத்து <DNT>yellow</DNT> பொருட்களும் <DT>smaller than </DT>43 ஆக இருப்ப��ை கவனிக்கவும்.
179
+
180
+ 00:05:45.480 --> 00:05:49.509
181
+ மேலும் அனைத்து <DNT>green</DNT> விஷயங்களும் <DT>bigger than</DT> 43. மேலும் <DT>merging</DT> செய்ய தேவையில்லை.
182
+
183
+ 00:05:52.243 --> 00:05:54.899
184
+ எனவே, <DT>partitioning</DT> எவ்வாறு செயல்படுகிறது என்பதைப் பார்ப்போம்.
185
+
186
+ 00:05:54.899 --> 00:05:59.350
187
+ இங்கே நம்மிடம் முந்தைய <DT>list</DT> ல் உள்ளது. மேலும் 43 ஐ நமது <DT>pivot element</DT> ஆக <DT>marked </DT> செய்துள்ளோம்.
188
+
189
+ 00:05:59.350 --> 00:06:03.112
190
+ மீதமுள்ள <DT>elements</DT> களை <DT>scan</DT> செய்து அவற்றை <DT>divide</DT> செய்ய விரும்புகிறோம்.
191
+
192
+ 00:06:03.137 --> 00:06:08.742
193
+ இரண்டு குழுக்கள், <DT>smaller than</DT> 43, <DNT>yellow ones</DNT>, <DT>bigger than</DT> 43, <DNT>green ones</DNT> மற்றும் அவற்றை <DT>rearrange</DT> செய்யவும்.
194
+
195
+ 00:06:09.962 --> 00:06:13.839
196
+ நாம் என்ன செய்வோம் இரண்டு <DT>pointers</DT> கள் <DNT>yellow pointer</DNT> மற்றும் <DNT>green pointer</DNT> ஐ வைத்திருப்போம்.
197
+
198
+ 00:06:14.155 --> 00:06:19.081
199
+ மேலும் பொதுவான விதி என்னவென்றால், எந்த ஒரு <DT>point</DT>லும் நாம் சிறிது <DT>distance</DT> ல் இருப்போம்.
200
+
201
+ 00:06:19.355 --> 00:06:24.129
202
+ நான் <DNT>orange</DNT> நிறத்தில் வரையப் போகும் <DT>visible</DT> <DNT>yellow pointer</DNT> மற்றும் <DNT>green pointer</DNT>.
203
+
204
+ 00:06:24.129 --> 00:06:29.165
205
+ இவை இந்த <DT>order</DT> ல் நகரும் <DNT>orange pointer</DNT> அல்லது <DNT>yellow pointer</DNT> எப்போதும் <DNT>green pointer</DNT> பின்னால் இருக்கும்.
206
+
207
+ 00:06:29.565 --> 00:06:35.397
208
+ நீங்கள் பராமரிக்கும் <DT>inductive property</DT> என்னவென்றால், இந்த <DT>elements</DT> கள் 43 ஐ விட <DT>smaller than</DT> அல்லது சமமாகவோ இருக்கும்.
209
+
210
+ 00:06:35.910 --> 00:06:40.643
211
+ இந்த <DT>elements</DT> கள் <DT>bigger than</DT> 43 மற்றும் இந்த <DT>elements</DT> கள் <DT>தெரியவில்லை</DT>.
212
+
213
+ 00:06:42.577 --> 00:06:46.139
214
+ நாம் செய்ய முயற்சிப்பது என்னவென்றால், <DT>left</DT> ல் இருந்து <DNT>right</DNT> க்கு நகர்த்த முயற்சிக்கிறோம்.
215
+
216
+ 00:06:46.139 --> 00:06:49.589
217
+ ஒவ்வொரு முறையும் <DT>unknown elements</DT> ஐ காணும் அனைத்து <DT>unknown elements</DT> களையும் <DT>classify</DT> செய்யவும்.
218
+
219
+ 00:06:49.552 --> 00:06:52.660
220
+ இந்த property ஐ நாம் maintain பண்ண இரண்டு <DT>pointers</DT> களை மாற்றுவோம்.
221
+
222
+ 00:06:52.700 --> 00:06:57.699
223
+ 43 க்கும் முதல் <DT>pointer</DT> க்கும் இடையில் <DT>elements smaller than</DT> 43 அல்லது அதற்கு சமமாக உள்ளன.
224
+
225
+ 00:06:57.699 --> 00:07:01.494
226
+ முதல் <DT>pointer</DT> க்கும் இரண்டாவது <DT>pointer</DT> க்கும் இடையில் நம் <DT>elements</DT> கள் கண்டிப்பாக 43 க்கு <DT>greater</DT> ஆக உள்ளது.
227
+
228
+ 00:07:01.752 --> 00:07:05.230
229
+ மற்றும் <DNT>green pointer</DNT> இன் <DNT>right</DNT> பக்கம் இன்னும் <DT>scanned</DT> செய்யப்படாதவை உள்ளன.
230
+
231
+ 00:07:07.023 --> 00:07:10.000
232
+ எனவே, ஆரம்பத்தில் எதுவும் தெரியவில்லை. பின்னர் நாம் 32 ஐ பார்க்கிறோம்.
233
+
234
+ 00:07:10.000 --> 00:07:14.618
235
+ 32 43 ஐ விட <DT>smaller than</DT> ஆக இருப்பதால், <DNT>yellow pointer</DNT> ஐ நகர்த்துகிறோம். மேலும் <DNT>green pointer</DNT> ஐ உடன் தள்ளுகிறோம்.
236
+
237
+ 00:07:14.643 --> 00:07:16.949
238
+ தெரியாத விஷயம் 22 இல் தொடங்குகிறது.
239
+
240
+ 00:07:16.949 --> 00:07:22.060
241
+ <DNT>yellow</DNT> மற்றும் <DNT>green pointer</DNT> ஆகியவற்றுக்கு இடையே எதுவும் இல்லை. <DT>value bigger than</DT> 43 ஐ நாம் இன்னும் கண்டுபிடி��்கவில்லை.
242
+
243
+ 00:07:22.949 --> 00:07:24.910
244
+ எனவே, 22 க்கும் அதே நடக்கும்.
245
+
246
+ 00:07:24.910 --> 00:07:28.629
247
+ இப்போது, 78ஐ பார்க்கும்போது, 78 <DT>bigger than</DT> 43 என்பதைக் கவனிக்கிறோம்.
248
+
249
+ 00:07:29.008 --> 00:07:33.635
250
+ இப்போது, நாம் <DNT>green pointer</DNT> ஐ மட்டுமே நகர்த்துகிறோம். மேலும் <DNT>yellow pointer</DNT> ஐ அல்ல. இப்போது, இந்த 3 இடைவெளிகளை முன்பு போலவே வைத்திருக்கிறோம்.
251
+
252
+ 00:07:33.935 --> 00:07:36.819
253
+ இது 43 க்கு குறைவான <DT>equal</DT> ஆன பகுதி என்பதை நினைவில் கொள்ளுங்கள்.
254
+
255
+ 00:07:36.819 --> 00:07:44.350
256
+ இது <DT>greater than</DT> 43 உள்ள பகுதி மற்றும் இந்த பகுதி unknown <DNT>right</DNT>, நாம் இந்த வழியில் தொடர்கிறோம்.
257
+
258
+ 00:07:44.350 --> 00:07:48.189
259
+ இப்போது நாம் 63 ஐ பார்க்கிறோம். மீண்டும் 63 <DNT>green zone</DNT> ஐ நீட்டிக்கிறது.
260
+
261
+ 00:07:48.189 --> 00:07:52.540
262
+ 57 ஒரு <DNT>green zone</DNT> ஐ நீட்டிக்கிறது 91 ஒரு <DNT>green zone</DNT> ஐ நீட்டிக்கிறது.
263
+
264
+ 00:07:52.540 --> 00:07:56.470
265
+ இப்போது, 13 ஐ கண்டுபிடிக்கும்போது நாம் ஏதாவது செய்ய வேண்டும்.
266
+
267
+ 00:07:56.470 --> 00:08:00.100
268
+ 13 என்பது இப்போது <DNT>yellow zone</DNT> ல் சேர்க்கப்பட வேண்டிய ஒரு <DT>element</DT>.
269
+
270
+ 00:08:00.205 --> 00:08:03.705
271
+ ஒரு <DT>strategy</DT> நிறைய மாற்றங்களைச் செய்ய வேண்டும்.
272
+
273
+ 00:08:03.730 --> 00:08:07.360
274
+ நாம் 13 ஐ 22 இருக்கும் இடத்திற்கு அல்லது 22 க்குப் பிறகு நகர்த்துகிறோம்.
275
+
276
+ 00:08:07.360 --> 00:08:10.180
277
+ மேலும் 78 இல் இருந்து எல்லாவற்றையும் <DNT>right</DNT> க்கு தள்ளுகிறோம்.
278
+
279
+ 00:08:10.250 --> 00:08:15.220
280
+ ஆனால் உண்மையில், ஒரு புத்திசாலித்தனமான <DT>strategy</DT> என்னவென்றால், 13 இங்கே செல்ல வேண்டும் என்று சொல்வது.
281
+
282
+ 00:08:17.605 --> 00:08:21.519
283
+ நாம் space ஐ உருவாக்க வேண்டும். ஆனால் <DT>space</DT> ஐ உருவாக்குவதற்கு பதிலாக.
284
+
285
+ 00:08:21.519 --> 00:08:30.399
286
+ எப்படியும் <DNT>green</DNT> விஷயங்களை நாம் <DT>sort</DT> செய்யபோகிறோம். அது ஒரு பொருட்டல்ல என்று சொல்லலாம். இரண்டையும் எந்த வழியில் <DT>sort</DT> செய்கிறோம் என்பது எப்படி முக்கியம். இந்த 78ஐ எடுத்து 13க்கு நகர்த்துவோம்.
287
+
288
+ 00:08:30.399 --> 00:08:33.009
289
+ எந்த மாற்றத்தையும் செய்வதற்கு பதிலாக.
290
+
291
+ 00:08:33.009 --> 00:08:36.370
292
+ <DNT>green</DNT> zone ல் முதல் <DT>element</DT> ஐ <DT>exchange</DT> செய்கிறோம்.
293
+
294
+ 00:08:36.370 --> 00:08:38.320
295
+ நாம் இதுவரை பார்க்கும் <DT>element</DT> உடன்.
296
+
297
+ 00:08:38.320 --> 00:08:41.980
298
+ அது தானாகவே <DNT>yellow zone</DNT> மற்றும் <DNT>green zone</DNT> இரண்டையும் சரியாக நீட்டிக்கும்.
299
+
300
+ 00:08:42.080 --> 00:08:49.299
301
+ நமது அடுத்த <DT>step</DT> 13 <DT>smaller than</DT> 43 என்பதை கண்டறிந்து, அதை 73 உடன் <DT>இடமாற்று</DT> செய்வது.
302
+
303
+ 00:08:49.399 --> 00:08:54.070
304
+ இப்போது, நம்மிடம் உள்ள <DT>pivot</DT> ன் <DNT>right</DNT> க்கு ஒரு <DT>intermediate stage</DT> ஐ அடைந்துள்ளோம்.
305
+
306
+ 00:08:54.070 --> 00:08:58.360
307
+ எல்லாவற்றையும் scanned செய்து, அவற்றை <DT>smaller</DT> ஆக வகைப்படுத்தியுள்ளோம்.
308
+
309
+ 00:08:58.360 --> 00:08:59.889
310
+ மற்றும் <DT>bigger</DT> ஐயும்.
311
+
312
+ 00:09:00.716 --> 00:09:04.216
313
+ இப்போது, <DNT>yellow</DNT> விஷயங்களை 43க்கு <DT>left</DT> பக்கம் <DT>push</DT> செய்ய வேண்டும்.
314
+
315
+ 00:09:05.036 --> 00:09:09.165
316
+ இப்போது, <DNT>yellow zone</DNT> ல் 13ஐ சேர்த்தபோது பார்த்த அதே <DT>problem</DT> மீண்டும் ஒருமுறை நமக்கு வந்துள்ளது.
317
+
318
+ 00:09:09.190 --> 00:09:13.210
319
+ நாம் 43 ஐ சரியான இடத்திற்கு நகர்த்தினால், இங்கே அனைத்தையும் <DNT>left</DNT> க்கு நகர்த்த வேண்டும்.
320
+
321
+ 00:09:13.404 --> 00:09:18.940
322
+ ஆனால், அதற்குப் பதிலாக இந்த 13ஐ <DNT>yellow zone</DNT> ல் கடைசி <DT>element</DT> ஆக எடுத்துக்கொள்ளலாம்.
323
+
324
+ 00:09:18.940 --> 00:09:22.149
325
+ மற்றும் அதை அங்கே <DT>replace</DT> செய்யவும். 32 மற்றும் 22 ஐ shift செய்ய வேண்டாம்.
326
+
327
+ 00:09:22.149 --> 00:09:26.759
328
+ இது <DT>order</DT> ஐ சீர்குலைக்கிறது. ஆனால் எப்படியும் இது <DT>unsorted</DT> செய்யாமல், <DT>unsorted</DT> ஆக உள்ளது.
329
+
330
+ 00:09:27.632 --> 00:09:29.889
331
+ நாம் இதை செய்கிறோம். இப்போது நம்மிடம் உள்ளது.
332
+
333
+ 00:09:30.001 --> 00:09:36.171
334
+ நாம் விரும்பியபடி <DT>array rearranged</DT> செய்யப்பட்டது. எனவே, <DT>left</DT> ல் உள்ள இவை அனைத்தும் <DT>smaller than</DT> <DT>pivot</DT>.
335
+
336
+ 00:09:37.244 --> 00:09:41.856
337
+ <DT>pivot</DT> நடுவில் உள்ளது. மற்றும் <DNT>right</DNT> ல் உள்ள அனைத்தும் <DT>bigger than</DT> <DT>pivot</DT>.
338
+
339
+ 00:09:46.550 --> 00:09:53.830
340
+ இங்கே <DT>python</DT> இன் ஒரு <DT>implementation</DT> உள்ளது. <DT>quick sort</DT> என்பது <DT>merge sort </DT> மற்றும் <DT>binary research</DT> போன்றவற்றைக் கொண்டிருக்கும் என்பதை நினைவில் கொள்ளவும்.
341
+
342
+ 00:09:53.830 --> 00:09:58.690
343
+ <DT>smaller</DT> மற்றும் <DT>smaller segments</DT> ல் அதை மீண்டும் மீண்டும் பயன்படுத்துகிறோம். பொதுவாக நாம் அதை <DT>pass</DT> செய்யவும்.
344
+
345
+ 00:09:58.690 --> 00:10:03.523
346
+ நாம் <DNT>call A</DNT> என்ற <DT>list</DT> க்கும், <DT>segment</DT> ன் <DT>end points</DT> ஆன <DNT>left</DNT> மற்றும் <DNT>right</DNT>.
347
+
348
+ 00:10:03.548 --> 00:10:07.238
349
+ நாம் ஒரு <DNT>slice l </DNT> முதல் <DNT>r minus 1</DNT> வரை செய்கிறோம்.
350
+
351
+ 00:10:08.244 --> 00:10:13.210
352
+ இந்த <DT>slice</DT> 1 அல்லது 0 <DT>length</DT> ஆக இருந்தால், நாம் எதுவும் செய்ய மாட்டோம்.
353
+
354
+ 00:10:14.223 --> 00:10:17.320
355
+ இல்லையெனில், நாம் முன்பு இருந்த இந்த <DT>partitioning strategy</DT> ஐ பின்பற்றுவோம்.
356
+
357
+ 00:10:17.708 --> 00:10:22.120
358
+ அதாவது <DNT>l</DNT> இலிருந்து <DNT>r minus 1</DNT> வரை <DT>sorting</DT> செய்கிறோம்.
359
+
360
+ 00:10:22.120 --> 00:10:24.220
361
+ எனவே, <DT>position l</DT>.
362
+
363
+ 00:10:24.379 --> 00:10:25.899
364
+ இது <DT>pivot</DT> ஆகும்.
365
+
366
+ 00:10:26.793 --> 00:10:29.671
367
+ <DNT>right</DNT> முதலில் இங்கே <DNT>yellow pointer</DNT> ஐ வைப்போம்.
368
+
369
+ 00:10:31.011 --> 00:10:33.635
370
+ <DNT>yellow zone</DNT> இன் முடிவு என்று கூறுகிறது.
371
+
372
+ 00:10:34.005 --> 00:10:38.500
373
+ உண்மையில் <DT>pivot</DT> உள்ளது அங்கு எதுவும் இல்லை. <DNT>yellow</DNT> என்பது <DNT>l plus 1</DNT> ஆகும்.
374
+
375
+ 00:10:38.500 --> 00:10:50.781
376
+ இப்போது <DNT>green</DNT>ஐ தொடர அனுமதிக்கிறோம். ஒவ்வொரு <DT>time</DT>ம் <DNT>green</DNT> இல் ஒரு <DT>element</DT> ஐ பார்க்கும்போது புதிய <DNT>green</DNT> ஒன்றைக் காட்டிலும் <DT>smaller than</DT> ஆக இருக்கும் <DT>pivot</DT> ஆகும். இது <DT>pivot</DT> என்பதை நினைவில் கொள்ளுங்கள்.
377
+
378
+ 00:10:51.965 --> 00:10:55.661
379
+ <DNT>right</DNT> நாம் எப்போதாவது ஒரு <DNT>green</DNT> ஐ பார்த்தால், அடுத்த <DT>value</DT> ஐ.
380
+
381
+ 00:10:55.686 --> 00:10:57.580
382
+ சரிபார்க்கப்பட வேண்டியதை விட <DT>smaller than</DT> அல்லது சமமானது.
383
+
384
+ 00:10:57.590 --> 00:11:01.714
385
+ நாம் <DT>exchange</DT> செய்கிறோம். இதனால் இந்த <DT>value</DT> ஐ <DNT>yellow zone</DNT> ன் முடிவுக்குக் கொண்டு வருகிறோம்.
386
+
387
+ 00:11:01.739 --> 00:11:03.220
388
+ இதைத்தான் 13ல் செய்தோம்.
389
+
390
+ 00:11:03.344 --> 00:11:07.590
391
+ பின்னர், <DNT>yellow pointer</DNT> ஐ நகர்த்துகிறோம். இல்லையெனில் கண்டிப்பாக <DT>bigger</DT> <DT>value</DT> ஐ கண்டால் நகர்த்துவோம்.
392
+
393
+ 00:11:07.590 --> 00:11:11.860
394
+ <DNT>green pointer</DNT> மட்டுமே <DT>for loop</DT> ஆல் மறைமுகமாக செய்யப்படுகிறது. மற்றொன்றை நகர்த்த மாட்டோம்.
395
+
396
+ 00:11:11.929 --> 00:11:14.883
397
+ இதன் முடிவில் நமக்கு <DT>pivot</DT> உள்ளது.
398
+
399
+ 00:11:15.894 --> 00:11:19.784
400
+ நாம் <DT>pivot</DT> க்கு சமமானதைக் காட்டிலும் குறைவானதைக் கொண்டுள்ளோம். பின்னர் <DT>greater than pivot</DT> ம் கொண்டுள்ளோம்.
401
+
402
+ 00:11:19.809 --> 00:11:27.914
403
+ இந்த விதியின் முடிவில் நாம் அடைந்த அந்த intermediate stage இதுதான். இப்போது, நாம் <DT>pivot</DT> ஐ கண்டுபிடித்து சரியான இடத்திற்கு நகர்த்த வேண்டும். எனவே, <DNT>yellow</DNT> என்பதை நினைவில் கொள்ளுங்கள்.
404
+
405
+ 00:11:29.241 --> 00:11:32.769
406
+ <DNT>yellow</DNT> <DNT>last</DNT> க்கு அப்பால் உள்ள <DT>position</DT> ஐ சுட்டிக்காட்டுகிறது.
407
+
408
+ 00:11:32.769 --> 00:11:37.440
409
+ <DT>element அதை விட சிறியது</DT>. <DNT>yellow</DNT> இதற்கு முன் எப்போதும் ஒரு <DT>value</DT> ஆகும்.
410
+
411
+ 00:11:37.440 --> 00:11:40.396
412
+ <DNT>yellow</DNT> minus 1 இன் <DT>value</DT> ஐ எடுத்து, <DT>left value</DT> உடன் <DT>exchange</DT> செய்வோம்.
413
+
414
+ 00:11:41.414 --> 00:11:48.765
415
+ இப்போது நாம் செய்ய வேண்டியது என்னவென்றால், நம்மிடம் இப்போது <DNT> p, p and greater than p</DNT> ஐ விட குறைவாக உள்ளது.
416
+
417
+ 00:11:49.627 --> 00:12:01.350
418
+ இங்குதான் <DNT>yellow</DNT> <DNT>சரியானது</DNT>. நாம் 0 இலிருந்து <DNT>yellow</DNT> minus 1 க்கு செல்ல வேண்டும். மீண்டும் <DNT>sort p </DNT> ஐ விரும்பவில்லை. ஏனெனில் <DNT>p</DNT> ஏற்கனவே சரியான இடத்தில் வைக்கப்பட்டுள்ளது.
419
+
420
+ 00:12:01.350 --> 00:12:06.391
421
+ <DNT>L</DNT> இலிருந்து <DNT>yellow</DNT> minus 1 ஆகவும், <DNT>yellow</DNT> இலிருந்து <DNT>right</DNT> முனையிலும் <DT>quick sort</DT> செய்வோம்.
422
+
423
+ 00:12:13.070 --> 00:12:17.070
424
+ <DT>slide</DT> ல் பார்த்த <DT>python code</DT> ஐ இங்கே ஒரு <DT>file</DT> ல் எழுதியுள்ளோம்.
425
+
426
+ 00:12:17.070 --> 00:12:20.320
427
+ slide ல் இருந்த அதே <DT>code</DT> இதுதானா என்பதை சரிபார்க்கலாம்.
428
+
429
+ 00:12:20.345 --> 00:12:28.786
430
+ நாம் அதை முயற்சி செய்து <DT>run</DT> செய்யலாம் மற்றும் அது செயல்படுகிறதா என்று சரிபார்க்கலாம். <DT>call python</DT>, இந்த <DT>function</DT> ஐ <DT>import</DT> செய்கிறோம்.
431
+
432
+ 00:12:32.849 --> 00:12:37.699
433
+ இது மீண்டும் ஒரு வகையான <DT>sorts</DT> <DT>function</DT> என்பதை நினைவில் கொள்ளுங்கள். எதையாவது <DT>sort</DT> செய்து அதன் விளைவைப் பார்க்க விரும்பினால்.
434
+
435
+ 00:12:37.753 --> 00:12:40.870
436
+ நாம் அதற்கு ஒரு <DT>name</DT> ஐ <DT>assign</DT> செய்ய வேண்டும். பின்னர் அந்த <DT>name</DT> ஐ <DT>sort</DT> செய்து, பிறகு <DT>name</DT> ஐ சரிபார்க்க வேண்டும்.
437
+
438
+ 00:12:40.909 --> 00:12:48.137
439
+ எடுத்துக்காட்டாக, 500 முதல் 0 வரைய���லான <DT>range</DT> of <DT>values</DT> ஐ எடுத்துக் கொள்வோம்.
440
+
441
+ 00:12:50.287 --> 00:12:58.090
442
+ இப்போது நாம் <DNT>quicksort l</DNT> என்று சொன்னால், அதற்கு <DNT>of course</DNT> முடிவைக் கொடுக்க வேண்டும்.
443
+
444
+ 00:13:01.020 --> 00:13:02.468
445
+ பிறகு <DNT>l</DNT> சரியாக <DT>sorted</DT> செய்யப்படும்.
446
+
447
+ 00:13:04.311 --> 00:13:09.523
448
+ நீங்கள் அனைத்தையும் பார்க்க முடியாது. ஆனால் 83 84 முதல் நூறு வரை மற்றும் இரண்டு 500 வரை பார்க்க முடியும்.
449
+
450
+ 00:13:10.995 --> 00:13:16.480
451
+ இப்போது, 1000 என்று சொன்னால், <DT>insertion sort</DT> ல் நமக்கு இருந்த அதே <DT>problem</DT> உள்ளது.
452
+
453
+ 00:13:17.897 --> 00:13:22.596
454
+ பின்னர் நாம் இதை <DT>quicksort</DT> செய்ய முயற்சிக்கிறோம். நீங்கள் இதை <DT>recursion depth</DT> ஆல் பெறுவீர்கள்.
455
+
456
+ 00:13:22.621 --> 00:13:29.644
457
+ <DT>worst case</DT> ல் நாம் பார்ப்பது போல, <DT>quick sort</DT> ஆனது <DT>insertion sort</DT> ஐ போலவே செயல்படுகிறது மற்றும் இது மோசமான case.
458
+
459
+ 00:13:29.669 --> 00:13:33.759
460
+ இதைப் போக்க, நாம் வழக்கமான காரியத்தைச் செய்ய வேண்டும். <DT>SYS module</DT> ஐ <DT>import</DT> செய்ய வேண்டும்.
461
+
462
+ 00:13:33.759 --> 00:13:35.409
463
+ <DT>recursion limit</DT> ஐ <DT>set</DT> செய்யவும்.
464
+
465
+ 00:13:36.658 --> 00:13:43.652
466
+ எனவே, பொருத்தமான பெரிய ஒன்று பத்தாயிரம் அல்லது நூறாயிரம் என்று சொல்லுங்கள். பின்னர் அதை <DT>quicksort</DT> செய்ய சொன்னால் எந்த problem உம் இல்லை.
467
+
468
+ 00:13:44.779 --> 00:13:49.299
469
+ <DT>python</DT> ல் இந்த <DT>recursion limit</DT> ஐ manually set செய்ய வேண்டிய மற்றொரு case இதுவாகும்.
470
+
471
+ 00:13:49.647 --> 00:13:56.929
472
+ உண்மையில் நாம் பார்க்கக்கூடிய ஒரு விஷயம் என்னவென்றால், <DT>quicksort</DT> என்பது நாம் நம்புவது போல் நல்லதல்ல, ஏனெனில்.
473
+
474
+ 00:13:57.008 --> 00:14:02.080
475
+ எடுத்துக்காட்டாக, 7500 என்று ஏதாவது <DT>size</DT> ஐ <DT>instance sort</DT> செய்யவும்.
476
+
477
+ 00:14:05.504 --> 00:14:09.554
478
+ பின்னர் அது ஒரு புலப்படும் நேரம் எடுக்கும். எனவே, <DNT>n log n</DNT> என்று <DT>merge sort </DT> ஐ பார்த்தோம்.
479
+
480
+ 00:14:09.790 --> 00:14:13.700
481
+ 5,000 மற்றும் 10000 மற்றும் 100,000 கூட <DT>instantaneously</DT> செய்யும்.
482
+
483
+ 00:14:13.832 --> 00:14:18.129
484
+ தெளிவாக <DT>quick sort</DT> மற்றும் <DT>merge sort </DT> செயல்படாது.
485
+
486
+ 00:14:18.165 --> 00:14:22.480
487
+ மற்றும் உண்மையில் <DT>quick sort</DT> க்கு <DT>order</DT> <DNT>n log n</DNT> <DT>merge sort </DT> இல்லை என்பதை நாம் பார்ப்போம்.
488
+
489
+ 00:14:22.511 --> 00:14:25.090
490
+ நாம் விரும்பியபடி நடத்தை.
491
+
492
+ 00:14:25.090 --> 00:14:28.539
493
+ அதற்குக் காரணம், நாம் <DT>median</DT> ஐ பயன்படுத்தாமல், split செய்வதற்கான முதல் <DT>value</DT> ஐ பயன்படுத்துகிறோம்.
494
+
495
+ 00:14:28.539 --> 00:14:33.909
496
+ அதை அடுத்த lecture ல் பார்ப்போம். ஏன் <DT>quick sort</DT> ல் உண்மையில் ஒரு worst case <DNT>order n log n algorithm</DNT> அல்ல.
Translated_SRT/Week3_Lecture4_Cleaned_Tagged.ta.srt ADDED
@@ -0,0 +1,659 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ 1
2
+ 00:00:02,246 --> 00:00:06,190
3
+ <DT>merge sort </DT> என்பது <DT>order</DT> <DNT>n log n</DNT> <DT>sorting algorithm</DT> என்று பார்த்தோம்.
4
+
5
+ 2
6
+ 00:00:06,190 --> 00:00:10,509
7
+ ஆனால் இது சில குறைபாடுகளைக் கொண்டுள்ளது. இது சில நேரங்களில் <DT>impractical</DT> ஆகிறது.
8
+
9
+ 3
10
+ 00:00:10,849 --> 00:00:14,740
11
+ முக்கிய பிரச்சனை என்னவென்றால், <DT>merging</DT> க்கு <DT>extra space</DT> தேவைப்படுகிறது.
12
+
13
+ 4
14
+ 00:00:14,869 --> 00:00:19,076
15
+ <DT>recursion</DT> ஐ பயன்படுத்தாமல் <DT>implement merge sort </DT> செய்வது கடினம் என்பதையும் நாம் பார்த்தோம்.
16
+
17
+ 5
18
+ 00:00:19,101 --> 00:00:22,108
19
+ மற்றும் <DT>recursion</DT> <DT>programming language</DT> ல் அதன் சொந்த செலவைக் கொண்டுள்ளது.
20
+
21
+ 6
22
+ 00:00:24,841 --> 00:00:26,952
23
+ எனவே, <DT>space problem</DT> ஐ தீர்க்கலாம்.
24
+
25
+ 7
26
+ 00:00:27,736 --> 00:00:33,310
27
+ <DT>merge function</DT> ஐ <DT>implement</DT> செய்யும் <DT>பொருட்டு</DT>, <DT>merge sort </DT> க்கு <DT>extra space</DT> தேவைப்படுகிறது.
28
+
29
+ 8
30
+ 00:00:33,590 --> 00:00:38,500
31
+ நாம் ஏன் <DT>merge</DT> செய்ய வேண்டும்? நாம் <DT>merge</DT> செய்ய வேண்டியதன் காரணம், நாம் <DT>merge sort </DT> ஐ செய்யும்போது,
32
+
33
+ 9
34
+ 00:00:38,500 --> 00:00:45,759
35
+ நம்மிடம் <DT>initial list</DT> உள்ளது. பின்னர் அதை இரண்டு பகுதிகளாக split செய்கிறோம். ஆனால், பொதுவாக <DT>left</DT> இலிருந்து <DT>items</DT> கள் இருக்கலாம்.
36
+
37
+ 10
38
+ 00:00:45,759 --> 00:00:50,409
39
+ <DNT>right</DNT> இலிருந்து <DT>bigger than items</DT>. எனவே, <DT>instance</DT> ஆக நாம் சொன்னால்,
40
+
41
+ 11
42
+ 00:00:50,450 --> 00:00:54,250
43
+ <DT>left</DT> ல் <DT>even numbers</DT> மற்றும் <DNT>right</DNT> ல் <DT>odd numbers</DT>.
44
+
45
+ 12
46
+ 00:00:54,550 --> 00:00:58,900
47
+ இரண்டு பக்கங்களிலிருந்தும் <DT>numbers alternately</DT> எடுத்துக்கொண்டு <DT>merge</DT> செய்ய வேண்டும்.
48
+
49
+ 13
50
+ 00:00:59,630 --> 00:01:09,646
51
+ <DT>divided problem</DT> ன் <DT>left</DT> பக்கத்தில் உள்ள அனைத்தும் <DT>divided problem</DT> ன் <DNT>வலது</DNT> பக்கத்தில் உள்ள அனைத்தையும் விட சிறியதாக இருக்கும்படி <DT>arrange</DT> செய்தால்,
52
+
53
+ 14
54
+ 00:01:10,593 --> 00:01:12,146
55
+ பின்னர், நாம் அனைத்தையும் <DT>merge</DT> செய்ய தேவையில்லை.
56
+
57
+ 15
58
+ 00:01:12,699 --> 00:01:18,130
59
+ மேலும் இது <DT>merge</DT> செய்வதற்கு, கூடுதல் space தேவைப்படும் <DT>problem</DT> ஐ தவிர்க்கலாம்.
60
+
61
+ 16
62
+ 00:01:20,689 --> 00:01:23,702
63
+ <DT>merge</DT> இல்லாமல் எப்படி <DT>divide</DT> மற்றும் <DT>conquer</DT> செய்வது.
64
+
65
+ 17
66
+ 00:01:25,243 --> 00:01:27,659
67
+ <DT>median value</DT> நமக்குத் தெரியும் என்று வைத்துக்கொள்வோம்.
68
+
69
+ 18
70
+ 00:01:27,659 --> 00:01:33,716
71
+ ஒரு <DT>set</DT> ல் உள்ள <DT>median value</DT> என்பது <DT>half</DT> the <DT>elements</DT> are <DT>smaller than half</DT> are <DT>bigger</DT> ஆக இருக்கும் <DT>value</DT> என்பதை நினைவில் கொள்ளுங்கள்.
72
+
73
+ 19
74
+ 00:01:35,649 --> 00:01:42,124
75
+ <DT>median</DT> விட <DT>smaller than</DT> <DT>values</DT> அனைத்தையும் <DT>left half</DT> க்கும், <DT>median</DT> விட <DT>bigger than</DT> அனைத்தையும் <DNT>right half</DNT> க்கும் நகர்த்தலாம்.
76
+
77
+ 20
78
+ 00:01:43,883 --> 00:01:52,180
79
+ நாம் பார்ப்பது போல, <DT>list</DT> ன் <DT>length</DT> க்கு <DT>time proportional</DT> ஆக புதிய <DT>array</DT> வை உருவாக்காமல் இதைச் செய்யலாம்.
80
+
81
+ 21
82
+ 00:01:53,816 --> 00:02:00,989
83
+ இந்த <DT>rearrangement</DT> ஐ செய்த பிறகு, அனைத்து <DT>smaller values</DT> களையும் <DT>left half</DT> க்கும் <DT>bigger values</DT> களை <DNT>right half</DNT> க்கும் நகர்த்தவும்.
84
+
85
+ 22
86
+ 00:02:00,989 --> 00:02:06,443
87
+ இந்த <DT>divide</DT> மற்றும் <DT>conquer strategy</DT> ஐ நாம் <DT>recursively</DT> பயன்படுத்தலாம். மேலும் <DNT>right</DNT> மற்றும் <DT>left half</DT> ஐ தனித்தனியாக <DT>sort</DT> செய்யலாம்.
88
+
89
+ 23
90
+ 00:02:07,519 --> 00:02:12,520
91
+ மேலும் <DT>left half</DT> ல் உள்ள அனைத்தும், <DNT>right half</DNT> ல் உள்ள அனைத்தையும் விட <DT>சிறியது</DT> என்று நாம் உத்தரவாதம் அளித்துள்ளோம்.
92
+
93
+ 24
94
+ 00:02:13,019 --> 00:02:17,050
95
+ இது தானாகவே இதற்கு அர்த்தம் <DT>divide</DT> மற்றும் <DT>conquer</DT> step க்கு பிறகு,
96
+
97
+ 25
98
+ 00:02:17,050 --> 00:02:24,442
99
+ <DT>left half</DT> ஏற்கனவே <DNT>right half</DNT> க்கு கீழே இருப்பதால், non-trivial முறையில் answers களை combine செய்ய வேண்டிய அவசியமில்லை. நாம் <DT>merge</DT> செய்ய தேவையில்லை.
100
+
101
+ 26
102
+ 00:02:28,309 --> 00:02:34,210
103
+ இந்த <DT>strategy</DT> ஐ பயன்படுத்தினால், <DT>merge sort </DT> போன்ற ஒரு <DT>recursive equation</DT> ஐ பெறுவோம்.
104
+
105
+ 27
106
+ 00:02:34,210 --> 00:02:42,370
107
+ <DNT>length n</DNT> இன் <DT>list</DT> ஐ <DT>sort</DT> செய்வதற்கு <DT>time</DT> தேவைப்படும். முதலில் <DNT>size n</DNT> இன் இரண்டு <DT>lists</DT> களை 2 ஆல் <DT>sort</DT> செய்ய வேண்டும்.
108
+
109
+ 28
110
+ 00:02:42,370 --> 00:02:50,039
111
+ நாம் <DNT>order n </DNT> ஐ செய்வோம் <DT>merging</DT> ஆக அல்ல. <DT>list</DT> ஐ <DT>decompose</DT> செய்வதற்காக. அதனால் அனைத்து <DT>smaller values</DT> களும் <DT>left</DT> மற்றும் <DNT>right</DNT> இல் இருக்கும்.
112
+
113
+ 29
114
+ 00:02:50,064 --> 00:02:54,483
115
+ நாம் <DT>recursive step</DT> செய்வதற்கு முன் rearranging <DT>step</DT> <DNT>order n</DNT> ஆகும்.
116
+
117
+ 30
118
+ 00:02:54,508 --> 00:02:57,879
119
+ அதேசமயம் <DT>merge</DT> என்பது <DT>recursive step</DT> க்கு பின் வரும் <DT>step</DT> ஆகும்.
120
+
121
+ 31
122
+ 00:02:57,879 --> 00:03:03,879
123
+ இது முந்தைய <DT>case</DT> ல் <DNT>order n</DNT> ஆக இருந்தது. ஆனால் நாம் <DT>recurrence</DT> ஐ <DT>solve</DT>செய்தால் அதே ஒன்றுதான். நமக்கு மற்றொரு <DNT>order n log n algorithm</DNT> கிடைக்கும்.
124
+
125
+ 32
126
+ 00:03:08,730 --> 00:03:12,340
127
+ இந்த <DT>approach</DT> இல் பெரிய <DT>bottleneck</DT> என்னவென்றால் <DT>median</DT> ஐ கண்டறிவதாகும்.
128
+
129
+ 33
130
+ 00:03:13,190 --> 00:03:20,663
131
+ ஒரு <DT>list</DT> ஐ <DT>sorting</DT> செய்வதன் நன்மைகளில் ஒன்று, <DT>sorting</DT> க்கு பின் <DT>median</DT> ஐ middle <DT>element</DT> ஆக நாம் அடையாளம் காணலாம் என்பதை நினைவில் கொள்ளுங்கள்.
132
+
133
+ 34
134
+ 00:03:21,890 --> 00:03:24,336
135
+ இப்போது, இங்கே நாம் <DT>sorting</DT> செய்வதற்கு முன் <DT>median</DT> ஐ கேட்கிறோம்.
136
+
137
+ 35
138
+ 00:03:24,996 --> 00:03:28,539
139
+ ஆனால், நமது நோக்கம் <DT>sort</DT> செய்வது. அது <DT>paradoxical</DT> ஆகும்.
140
+
141
+ 36
142
+ 00:03:28,539 --> 00:03:33,219
143
+ <DT>sorting</DT>ன் <DT>output</DT> <DT>sorting</DT> ஆன <DT>input</DT> ஆக இருக்க வேண்டும் என நாம் விரும்பினால்.
144
+
145
+ 37
146
+ 00:03:34,892 --> 00:03:42,580
147
+ எனவே, <DT>list</DT> ஐ <DNT>split</DNT> செய்து <DT>element</DT> ன் மிகவும் எளிமையான தேர்வு மூலம் <DT>strategy</DT> யை முயற்சிக்க வேண்டும் என்பதே இதன் பொருள்.
148
+
149
+ 38
150
+ 00:03:42,825 --> 00:03:46,780
151
+ <DT>median</DT> ஐ தேடுவதற்குப் பதிலாக, <DNT>list A</DNT> இல் சில <DT>value</DT> ஐ பெறுவோம்.
152
+
153
+ 39
154
+ 00:03:46,780 --> 00:03:49,689
155
+ மற்றும் <DT>pivot element</DT> என அழைக்கப்படுவதைப் பயன்படுத்தவும்.
156
+
157
+ 40
158
+ 00:03:49,689 --> 00:03:56,769
159
+ இந்த <DT>pivot</DT> ஐ பொறுத்து <DNT>A</DNT> என்று பிரிக்கிறோம். இதன���ல் அனைத்து <DT>smaller elements</DT> களும் <DT>left</DT> ஆகவும், <DT>bigger elements</DT> கள் அனைத்தும் <DNT>right</DNT> ஆகவும் இருக்கும்.
160
+
161
+ 41
162
+ 00:04:00,223 --> 00:04:11,636
163
+ இந்த <DT>algorithm</DT> <DT>quick sort</DT> என்று அழைக்கப்படுகிறது. இது 1960 களில் <DT>Tony Four</DT> என்ற நபரால் கண்டுபிடிக்கப்பட்டது மற்றும் இது மிகவும் பிரபலமான <DT>sorting algorithms</DT> களில் ஒன்றாகும்.
164
+
165
+ 42
166
+ 00:04:12,103 --> 00:04:16,082
167
+ பொதுவாக <DT>array</DT> இன் <DT>list</DT> ல் முதல் <DT>element</DT> ஆக இருக்கும் <DT>pivot element</DT> ஐ தேர்வு செய்கிறோம்.
168
+
169
+ 43
170
+ 00:04:16,759 --> 00:04:22,500
171
+ இந்த <DT>pivot</DT> இன் முடிவைப் பொறுத்து <DT>lower part</DT> லும் <DT>upper part</DT> லும் <DNT>partition A</DNT> செய்கிறோம்.
172
+
173
+ 44
174
+ 00:04:22,500 --> 00:04:24,943
175
+ எனவே, அனைத்து <DT>smaller elements</DT> களையும் <DT>left</DT> க்கு நகர்த்துகிறோம்.
176
+
177
+ 45
178
+ 00:04:25,056 --> 00:04:28,149
179
+ மற்றும் அனைத்து <DT> bigger elements</DT> முதல் <DNT>right</DNT> வரை <DT>pivotal</DT> தேர்வைப் பொறுத்து.
180
+
181
+ 46
182
+ 00:04:29,523 --> 00:04:34,163
183
+ இரண்டிற்கும் இடையே <DT>pivot</DT> வருவதை உறுதிசெய்கிறோம். ஏனெனில் <DT>array</DT> ல் முதல் <DT>element</DT> <DT>pivot</DT> ஆக எடுத்துள்ளோம்.
184
+
185
+ 47
186
+ 00:04:34,190 --> 00:04:41,036
187
+ இதற்குப் பிறகு நாம் அதை <DT>lower</DT> மற்றும் <DT>upper bound</DT> க்கு இடையில் உள்ள <DT>center</DT> க்கு நகர்த்த விரும்புகிறோம். பின்னர், இரண்டு <DT>partitions</DT> களை <DT>recursively sort</DT> செய்கிறோம்.
188
+
189
+ 48
190
+ 00:04:44,456 --> 00:04:48,910
191
+ ஒரு பொதுவான <DT>list</DT> ல் <DT>quick sort</DT> எவ்வாறு வேலை செய்யும் என்பது பற்றிய <DT>high level view</DT> இங்கே உள்ளது.
192
+
193
+ 49
194
+ 00:04:48,910 --> 00:04:56,143
195
+ இது தான் நமது <DT>list</DT> என்று வைத்துக்கொள்வோம். <DT>list</DT> ன் தொடக்கத்தை <DT>pivot element</DT> ஆக முதல் <DT>element</DT> ஐ அடையாளம் காண்போம்.
196
+
197
+ 50
198
+ 00:04:56,950 --> 00:05:01,569
199
+ இப்போது, மீதமுள்ள <DT>elements</DT> களில், எந்த <DNT>ones</DNT> <DT>smaller</DT> மற்றும் எந்த <DNT>ones</DNT> <DT>bigger</DT> என்பதைக் கண்டுபிடிக்க வேண்டும்.
200
+
201
+ 51
202
+ 00:05:02,410 --> 00:05:11,510
203
+ இதை எப்படிச் செய்வோம் என்று சொல்லாமல், 32, 22 மற்றும் 13 ஆகிய மூன்று <DT>elements</DT> களை <DT>smaller</DT> ஆகவும் <DNT>yellow</DNT> ல் <DT>marked </DT> செய்யபட்டதாகவும் அடையாளப்படுத்துகிறோம்.
204
+
205
+ 52
206
+ 00:05:11,810 --> 00:05:15,069
207
+ மற்றும் <DNT>green</DNT> இல் <DT>marked </DT> செய்யப்பட்ட மற்ற 4 <DT>elements</DT> கள் பெரியவை.
208
+
209
+ 53
210
+ 00:05:16,160 --> 00:05:20,040
211
+ முதல் <DT>step</DT> உண்மையில் இந்த <DT>criterion</DT> ஐ பொறுத்து <DT>partition</DT> செய்ய வேண்டும்.
212
+
213
+ 54
214
+ 00:05:20,040 --> 00:05:24,810
215
+ நாம் இந்த <DT>elements</DT> களை நகர்த்த வேண்டும். அதனால் அவை இரண்டு <DT>blocks</DT> ஆக வரும்.
216
+
217
+ 55
218
+ 00:05:24,810 --> 00:05:27,550
219
+ அந்த 13, 32 மற்றும் 22 <DT>left</DT> பக்கம் வரும்.
220
+
221
+ 56
222
+ 00:05:27,550 --> 00:05:33,430
223
+ 63 57, 91 மற்றும் 78, <DNT>right</DNT> மற்றும் <DT>pivot element</DT> 43 <DT>middle</DT> ல் வருகிறது.
224
+
225
+ 57
226
+ 00:05:33,947 --> 00:05:36,781
227
+ இது <DT>rearranging step</DT> மற்றும் இப்போது
228
+
229
+ 58
230
+ 00:05:37,060 --> 00:05:41,529
231
+ நாம் <DNT>yellow bits</DNT> மற்றும் <DNT>green bits</DNT> ஆகியவற்றை <DT>recursively sort</DT> செய்வோம். பிறகு அதைச் செய்யலாம் என்று கருதினால்,
232
+
233
+ 59
234
+ 00:05:41,529 --> 00:05:45,480
235
+ ந���்மிடம் ஒரு <DT>sorted array</DT> உள்ளது மற்றும் அனைத்து <DNT>yellow</DNT> பொருட்களும் <DT>smaller than </DT>43 ஆக இருப்பதை கவனிக்கவும்.
236
+
237
+ 60
238
+ 00:05:45,480 --> 00:05:49,509
239
+ மேலும் அனைத்து <DNT>green</DNT> விஷயங்களும் <DT>bigger than</DT> 43. மேலும் <DT>merging</DT> செய்ய தேவையில்லை.
240
+
241
+ 61
242
+ 00:05:52,243 --> 00:05:54,899
243
+ எனவே, <DT>partitioning</DT> எவ்வாறு செயல்படுகிறது என்பதைப் பார்ப்போம்.
244
+
245
+ 62
246
+ 00:05:54,899 --> 00:05:59,350
247
+ இங்கே நம்மிடம் முந்தைய <DT>list</DT> ல் உள்ளது. மேலும் 43 ஐ நமது <DT>pivot element</DT> ஆக <DT>marked </DT> செய்துள்ளோம்.
248
+
249
+ 63
250
+ 00:05:59,350 --> 00:06:03,112
251
+ மீதமுள்ள <DT>elements</DT> களை <DT>scan</DT> செய்து அவற்றை <DT>divide</DT> செய்ய விரும்புகிறோம்.
252
+
253
+ 64
254
+ 00:06:03,137 --> 00:06:08,742
255
+ இரண்டு குழுக்கள், <DT>smaller than</DT> 43, <DNT>yellow ones</DNT>, <DT>bigger than</DT> 43, <DNT>green ones</DNT> மற்றும் அவற்றை <DT>rearrange</DT> செய்யவும்.
256
+
257
+ 65
258
+ 00:06:09,962 --> 00:06:13,839
259
+ நாம் என்ன செய்வோம் இரண்டு <DT>pointers</DT> கள் <DNT>yellow pointer</DNT> மற்றும் <DNT>green pointer</DNT> ஐ வைத்திருப்போம்.
260
+
261
+ 66
262
+ 00:06:14,155 --> 00:06:19,081
263
+ மேலும் பொதுவான விதி என்னவென்றால், எந்த ஒரு <DT>point</DT>லும் நாம் சிறிது <DT>distance</DT> ல் இருப்போம்.
264
+
265
+ 67
266
+ 00:06:19,355 --> 00:06:24,129
267
+ நான் <DNT>orange</DNT> நிறத்தில் வரையப் போகும் <DT>visible</DT> <DNT>yellow pointer</DNT> மற்றும் <DNT>green pointer</DNT>.
268
+
269
+ 68
270
+ 00:06:24,129 --> 00:06:29,165
271
+ இவை இந்த <DT>order</DT> ல் நகரும் <DNT>orange pointer</DNT> அல்லது <DNT>yellow pointer</DNT> எப்போதும் <DNT>green pointer</DNT> பின்னால் இருக்கும்.
272
+
273
+ 69
274
+ 00:06:29,565 --> 00:06:35,397
275
+ நீங்கள் பராமரிக்கும் <DT>inductive property</DT> என்னவென்றால், இந்த <DT>elements</DT> கள் 43 ஐ விட <DT>smaller than</DT> அல்லது சமமாகவோ இருக்கும்.
276
+
277
+ 70
278
+ 00:06:35,910 --> 00:06:40,643
279
+ இந்த <DT>elements</DT> கள் <DT>bigger than</DT> 43 மற்றும் இந்த <DT>elements</DT> கள் <DT>தெரியவில்லை</DT>.
280
+
281
+ 71
282
+ 00:06:42,577 --> 00:06:46,139
283
+ நாம் செய்ய முயற்சிப்பது என்னவென்றால், <DT>left</DT> ல் இருந்து <DNT>right</DNT> க்கு நகர்த்த முயற்சிக்கிறோம்.
284
+
285
+ 72
286
+ 00:06:46,139 --> 00:06:49,589
287
+ ஒவ்வொரு முறையும் <DT>unknown elements</DT> ஐ காணும் அனைத்து <DT>unknown elements</DT> களையும் <DT>classify</DT> செய்யவும்.
288
+
289
+ 73
290
+ 00:06:49,552 --> 00:06:52,660
291
+ இந்த property ஐ நாம் maintain பண்ண இரண்டு <DT>pointers</DT> களை மாற்றுவோம்.
292
+
293
+ 74
294
+ 00:06:52,700 --> 00:06:57,699
295
+ 43 க்கும் முதல் <DT>pointer</DT> க்கும் இடையில் <DT>elements smaller than</DT> 43 அல்லது அதற்கு சமமாக உள்ளன.
296
+
297
+ 75
298
+ 00:06:57,699 --> 00:07:01,494
299
+ முதல் <DT>pointer</DT> க்கும் இரண்டாவது <DT>pointer</DT> க்கும் இடையில் நம் <DT>elements</DT> கள் கண்டிப்பாக 43 க்கு <DT>greater</DT> ஆக உள்ளது.
300
+
301
+ 76
302
+ 00:07:01,752 --> 00:07:05,230
303
+ மற்றும் <DNT>green pointer</DNT> இன் <DNT>right</DNT> பக்கம் இன்னும் <DT>scanned</DT> செய்யப்படாதவை உள்ளன.
304
+
305
+ 77
306
+ 00:07:07,023 --> 00:07:10,000
307
+ எனவே, ஆரம்பத்தில் எதுவும் தெரியவில்லை. பின்னர் நாம் 32 ஐ பார்க்கிறோம்.
308
+
309
+ 78
310
+ 00:07:10,000 --> 00:07:14,618
311
+ 32 43 ஐ விட <DT>smaller than</DT> ஆக இருப்பதால், <DNT>yellow pointer</DNT> ஐ நகர்த்துகிறோம். மேலும் <DNT>green pointer</DNT> ஐ உடன் தள்ளுகிறோம்.
312
+
313
+ 79
314
+ 00:07:14,643 --> 00:07:16,949
315
+ தெரியாத விஷயம் 22 இல் தொடங்குகிறது.
316
+
317
+ 80
318
+ 00:07:16,949 --> 00:07:22,060
319
+ <DNT>yellow</DNT> மற்றும் <DNT>green pointer</DNT> ஆகியவற்றுக்கு இடையே எதுவும் இல்லை. <DT>value bigger than</DT> 43 ஐ நாம் இன்னும் கண்டுபிடிக்கவில்லை.
320
+
321
+ 81
322
+ 00:07:22,949 --> 00:07:24,910
323
+ எனவே, 22 க்கும் அதே நடக்கும்.
324
+
325
+ 82
326
+ 00:07:24,910 --> 00:07:28,629
327
+ இப்போது, 78ஐ பார்க்கும்போது, 78 <DT>bigger than</DT> 43 என்பதைக் கவனிக்கிறோம்.
328
+
329
+ 83
330
+ 00:07:29,008 --> 00:07:33,635
331
+ இப்போது, நாம் <DNT>green pointer</DNT> ஐ மட்டுமே நகர்த்துகிறோம். மேலும் <DNT>yellow pointer</DNT> ஐ அல்ல. இப்போது, இந்த 3 இடைவெளிகளை முன்பு போலவே வைத்திருக்கிறோம்.
332
+
333
+ 84
334
+ 00:07:33,935 --> 00:07:36,819
335
+ இது 43 க்கு குறைவான <DT>equal</DT> ஆன பகுதி என்பதை நினைவில் கொள்ளுங்கள்.
336
+
337
+ 85
338
+ 00:07:36,819 --> 00:07:44,350
339
+ இது <DT>greater than</DT> 43 உள்ள பகுதி மற்றும் இந்த பகுதி unknown <DNT>right</DNT>, நாம் இந்த வழியில் தொடர்கிறோம்.
340
+
341
+ 86
342
+ 00:07:44,350 --> 00:07:48,189
343
+ இப்போது நாம் 63 ஐ பார்க்கிறோம். மீண்டும் 63 <DNT>green zone</DNT> ஐ நீட்டிக்கிறது.
344
+
345
+ 87
346
+ 00:07:48,189 --> 00:07:52,540
347
+ 57 ஒரு <DNT>green zone</DNT> ஐ நீட்டிக்கிறது 91 ஒரு <DNT>green zone</DNT> ஐ நீட்டிக்கிறது.
348
+
349
+ 88
350
+ 00:07:52,540 --> 00:07:56,470
351
+ இப்போது, 13 ஐ கண்டுபிடிக்கும்போது நாம் ஏதாவது செய்ய வேண்டும்.
352
+
353
+ 89
354
+ 00:07:56,470 --> 00:08:00,100
355
+ 13 என்பது இப்போது <DNT>yellow zone</DNT> ல் சேர்க்கப்பட வேண்டிய ஒரு <DT>element</DT>.
356
+
357
+ 90
358
+ 00:08:00,205 --> 00:08:03,705
359
+ ஒரு <DT>strategy</DT> நிறைய மாற்றங்களைச் செய்ய வேண்டும்.
360
+
361
+ 91
362
+ 00:08:03,730 --> 00:08:07,360
363
+ நாம் 13 ஐ 22 இருக்கும் இடத்திற்கு அல்லது 22 க்குப் பிறகு நகர்த்துகிறோம்.
364
+
365
+ 92
366
+ 00:08:07,360 --> 00:08:10,180
367
+ மேலும் 78 இல் இருந்து எல்லாவற்றையும் <DNT>right</DNT> க்கு தள்ளுகிறோம்.
368
+
369
+ 93
370
+ 00:08:10,250 --> 00:08:15,220
371
+ ஆனால் உண்மையில், ஒரு புத்திசாலித்தனமான <DT>strategy</DT> என்னவென்றால், 13 இங்கே செல்ல வேண்டும் என்று சொல்வது.
372
+
373
+ 94
374
+ 00:08:17,605 --> 00:08:21,519
375
+ நாம் space ஐ உருவாக்க வேண்டும். ஆனால் <DT>space</DT> ஐ உருவாக்குவதற்கு பதிலாக.
376
+
377
+ 95
378
+ 00:08:21,519 --> 00:08:30,399
379
+ எப்படியும் <DNT>green</DNT> விஷயங்களை நாம் <DT>sort</DT> செய்யபோகிறோம். அது ஒரு பொருட்டல்ல என்று சொல்லலாம். இரண்டையும் எந்த வழியில் <DT>sort</DT> செய்கிறோம் என்பது எப்படி முக்கியம். இந்த 78ஐ எடுத்து 13க்கு நகர்த்துவோம்.
380
+
381
+ 96
382
+ 00:08:30,399 --> 00:08:33,009
383
+ எந்த மாற்றத்தையும் செய்வதற்கு பதிலாக.
384
+
385
+ 97
386
+ 00:08:33,009 --> 00:08:36,370
387
+ <DNT>green</DNT> zone ல் முதல் <DT>element</DT> ஐ <DT>exchange</DT> செய்கிறோம்.
388
+
389
+ 98
390
+ 00:08:36,370 --> 00:08:38,320
391
+ நாம் இதுவரை பார்க்கும் <DT>element</DT> உடன்.
392
+
393
+ 99
394
+ 00:08:38,320 --> 00:08:41,980
395
+ அது தானாகவே <DNT>yellow zone</DNT> மற்றும் <DNT>green zone</DNT> இரண்டையும் சரியாக நீட்டிக்கும்.
396
+
397
+ 100
398
+ 00:08:42,080 --> 00:08:49,299
399
+ நமது அடுத்த <DT>step</DT> 13 <DT>smaller than</DT> 43 என்பதை கண்டறிந்து, அதை 73 உடன் <DT>இடமாற்று</DT> செய்வது.
400
+
401
+ 101
402
+ 00:08:49,399 --> 00:08:54,070
403
+ இப்போது, நம்மிடம் உள்ள <DT>pivot</DT> ன் <DNT>right</DNT> க்கு ஒரு <DT>intermediate stage</DT> ஐ அடைந்துள்ளோம்.
404
+
405
+ 102
406
+ 00:08:54,070 --> 00:08:58,360
407
+ எல்லாவற்றையும் scanned செய்து, அவற்றை <DT>smaller</DT> ஆக வகைப்படுத்தியுள்ளோம்.
408
+
409
+ 103
410
+ 00:08:58,360 --> 00:08:59,889
411
+ மற்றும் <DT>bigger</DT> ஐயும்.
412
+
413
+ 104
414
+ 00:09:00,716 --> 00:09:04,216
415
+ இப்போது, <DNT>yellow</DNT> விஷயங்களை 43க்கு <DT>left</DT> பக்கம் <DT>push</DT> செய்ய வேண்டும்.
416
+
417
+ 105
418
+ 00:09:05,036 --> 00:09:09,165
419
+ இப்போது, <DNT>yellow zone</DNT> ல் 13ஐ சேர்த்தபோது பார்த்த அதே <DT>problem</DT> மீண்டும் ஒருமுறை நமக்கு வந்துள்ளது.
420
+
421
+ 106
422
+ 00:09:09,190 --> 00:09:13,210
423
+ நாம் 43 ஐ சரியான இடத்திற்கு நகர்த்தினால், இங்கே அனைத்தையும் <DNT>left</DNT> க்கு நகர்த்த வேண்டும்.
424
+
425
+ 107
426
+ 00:09:13,404 --> 00:09:18,940
427
+ ஆனால், அதற்குப் பதிலாக இந்த 13ஐ <DNT>yellow zone</DNT> ல் கடைசி <DT>element</DT> ஆக எடுத்துக்கொள்ளலாம்.
428
+
429
+ 108
430
+ 00:09:18,940 --> 00:09:22,149
431
+ மற்றும் அதை அங்கே <DT>replace</DT> செய்யவும். 32 மற்றும் 22 ஐ shift செய்ய வேண்டாம்.
432
+
433
+ 109
434
+ 00:09:22,149 --> 00:09:26,759
435
+ இது <DT>order</DT> ஐ சீர்குலைக்கிறது. ஆனால் எப்படியும் இது <DT>unsorted</DT> செய்யாமல், <DT>unsorted</DT> ஆக உள்ளது.
436
+
437
+ 110
438
+ 00:09:27,632 --> 00:09:29,889
439
+ நாம் இதை செய்கிறோம். இப்போது நம்மிடம் உள்ளது.
440
+
441
+ 111
442
+ 00:09:30,001 --> 00:09:36,171
443
+ நாம் விரும்பியபடி <DT>array rearranged</DT> செய்யப்பட்டது. எனவே, <DT>left</DT> ல் உள்ள இவை அனைத்தும் <DT>smaller than</DT> <DT>pivot</DT>.
444
+
445
+ 112
446
+ 00:09:37,244 --> 00:09:41,856
447
+ <DT>pivot</DT> நடுவில் உள்ளது. மற்றும் <DNT>right</DNT> ல் உள்ள அனைத்தும் <DT>bigger than</DT> <DT>pivot</DT>.
448
+
449
+ 113
450
+ 00:09:46,550 --> 00:09:53,830
451
+ இங்கே <DT>python</DT> இன் ஒரு <DT>implementation</DT> உள்ளது. <DT>quick sort</DT> என்பது <DT>merge sort </DT> மற்றும் <DT>binary research</DT> போன்றவற்றைக் கொண்டிருக்கும் என்பதை நினைவில் கொள்ளவும்.
452
+
453
+ 114
454
+ 00:09:53,830 --> 00:09:58,690
455
+ <DT>smaller</DT> மற்றும் <DT>smaller segments</DT> ல் அதை மீண்டும் மீண்டும் பயன்படுத்துகிறோம். பொதுவாக நாம் அதை <DT>pass</DT> செய்யவும்.
456
+
457
+ 115
458
+ 00:09:58,690 --> 00:10:03,523
459
+ நாம் <DNT>call A</DNT> என்ற <DT>list</DT> க்கும், <DT>segment</DT> ன் <DT>end points</DT> ஆன <DNT>left</DNT> மற்றும் <DNT>right</DNT>.
460
+
461
+ 116
462
+ 00:10:03,548 --> 00:10:07,238
463
+ நாம் ஒரு <DNT>slice l </DNT> முதல் <DNT>r minus 1</DNT> வரை செய்கிறோம்.
464
+
465
+ 117
466
+ 00:10:08,244 --> 00:10:13,210
467
+ இந்த <DT>slice</DT> 1 அல்லது 0 <DT>length</DT> ஆக இருந்தால், நாம் எதுவும் செய்ய மாட்டோம்.
468
+
469
+ 118
470
+ 00:10:14,223 --> 00:10:17,320
471
+ இல்லையெனில், நாம் முன்பு இருந்த இந்த <DT>partitioning strategy</DT> ஐ பின்பற்றுவோம்.
472
+
473
+ 119
474
+ 00:10:17,708 --> 00:10:22,120
475
+ அதாவது <DNT>l</DNT> இலிருந்து <DNT>r minus 1</DNT> வரை <DT>sorting</DT> செய்கிறோம்.
476
+
477
+ 120
478
+ 00:10:22,120 --> 00:10:24,220
479
+ எனவே, <DT>position l</DT>.
480
+
481
+ 121
482
+ 00:10:24,379 --> 00:10:25,899
483
+ இது <DT>pivot</DT> ஆகும்.
484
+
485
+ 122
486
+ 00:10:26,793 --> 00:10:29,671
487
+ <DNT>right</DNT> முதலில் இங்கே <DNT>yellow pointer</DNT> ஐ வைப்போம்.
488
+
489
+ 123
490
+ 00:10:31,011 --> 00:10:33,635
491
+ <DNT>yellow zone</DNT> இன் முடிவு என்று கூறுகிறது.
492
+
493
+ 124
494
+ 00:10:34,005 --> 00:10:38,500
495
+ உண்மையில் <DT>pivot</DT> உள்ளது அங்கு எதுவும் இல்லை. <DNT>yellow</DNT> என்பது <DNT>l plus 1</DNT> ஆகும்.
496
+
497
+ 125
498
+ 00:10:38,500 --> 00:10:50,781
499
+ இப்போது <DNT>green</DNT>ஐ தொடர அனுமதிக்கிறோம். ஒவ்வொரு <DT>time</DT>ம் <DNT>green</DNT> இல் ஒரு <DT>element</DT> ஐ பார்க்கும்போது புதிய <DNT>green</DNT> ஒன்���ைக் காட்டிலும் <DT>smaller than</DT> ஆக இருக்கும் <DT>pivot</DT> ஆகும். இது <DT>pivot</DT> என்பதை நினைவில் கொள்ளுங்கள்.
500
+
501
+ 126
502
+ 00:10:51,965 --> 00:10:55,661
503
+ <DNT>right</DNT> நாம் எப்போதாவது ஒரு <DNT>green</DNT> ஐ பார்த்தால், அடுத்த <DT>value</DT> ஐ.
504
+
505
+ 127
506
+ 00:10:55,686 --> 00:10:57,580
507
+ சரிபார்க்கப்பட வேண்டியதை விட <DT>smaller than</DT> அல்லது சமமானது.
508
+
509
+ 128
510
+ 00:10:57,590 --> 00:11:01,714
511
+ நாம் <DT>exchange</DT> செய்கிறோம். இதனால் இந்த <DT>value</DT> ஐ <DNT>yellow zone</DNT> ன் முடிவுக்குக் கொண்டு வருகிறோம்.
512
+
513
+ 129
514
+ 00:11:01,739 --> 00:11:03,220
515
+ இதைத்தான் 13ல் செய்தோம்.
516
+
517
+ 130
518
+ 00:11:03,344 --> 00:11:07,590
519
+ பின்னர், <DNT>yellow pointer</DNT> ஐ நகர்த்துகிறோம். இல்லையெனில் கண்டிப்பாக <DT>bigger</DT> <DT>value</DT> ஐ கண்டால் நகர்த்துவோம்.
520
+
521
+ 131
522
+ 00:11:07,590 --> 00:11:11,860
523
+ <DNT>green pointer</DNT> மட்டுமே <DT>for loop</DT> ஆல் மறைமுகமாக செய்யப்படுகிறது. மற்றொன்றை நகர்த்த மாட்டோம்.
524
+
525
+ 132
526
+ 00:11:11,929 --> 00:11:14,883
527
+ இதன் முடிவில் நமக்கு <DT>pivot</DT> உள்ளது.
528
+
529
+ 133
530
+ 00:11:15,894 --> 00:11:19,784
531
+ நாம் <DT>pivot</DT> க்கு சமமானதைக் காட்டிலும் குறைவானதைக் கொண்டுள்ளோம். பின்னர் <DT>greater than pivot</DT> ம் கொண்டுள்ளோம்.
532
+
533
+ 134
534
+ 00:11:19,809 --> 00:11:27,914
535
+ இந்த விதியின் முடிவில் நாம் அடைந்த அந்த intermediate stage இதுதான். இப்போது, நாம் <DT>pivot</DT> ஐ கண்டுபிடித்து சரியான இடத்திற்கு நகர்த்த வேண்டும். எனவே, <DNT>yellow</DNT> என்பதை நினைவில் கொள்ளுங்கள்.
536
+
537
+ 135
538
+ 00:11:29,241 --> 00:11:32,769
539
+ <DNT>yellow</DNT> <DNT>last</DNT> க்கு அப்பால் உள்ள <DT>position</DT> ஐ சுட்டிக்காட்டுகிறது.
540
+
541
+ 136
542
+ 00:11:32,769 --> 00:11:37,440
543
+ <DT>element அதை விட சிறியது</DT>. <DNT>yellow</DNT> இதற்கு முன் எப்போதும் ஒரு <DT>value</DT> ஆகும்.
544
+
545
+ 137
546
+ 00:11:37,440 --> 00:11:40,396
547
+ <DNT>yellow</DNT> minus 1 இன் <DT>value</DT> ஐ எடுத்து, <DT>left value</DT> உடன் <DT>exchange</DT> செய்வோம்.
548
+
549
+ 138
550
+ 00:11:41,414 --> 00:11:48,765
551
+ இப்போது நாம் செய்ய வேண்டியது என்னவென்றால், நம்மிடம் இப்போது <DNT> p, p and greater than p</DNT> ஐ விட குறைவாக உள்ளது.
552
+
553
+ 139
554
+ 00:11:49,627 --> 00:12:01,350
555
+ இங்குதான் <DNT>yellow</DNT> <DNT>சரியானது</DNT>. நாம் 0 இலிருந்து <DNT>yellow</DNT> minus 1 க்கு செல்ல வேண்டும். மீண்டும் <DNT>sort p </DNT> ஐ விரும்பவில்லை. ஏனெனில் <DNT>p</DNT> ஏற்கனவே சரியான இடத்தில் வைக்கப்பட்டுள்ளது.
556
+
557
+ 140
558
+ 00:12:01,350 --> 00:12:06,391
559
+ <DNT>L</DNT> இலிருந்து <DNT>yellow</DNT> minus 1 ஆகவும், <DNT>yellow</DNT> இலிருந்து <DNT>right</DNT> முனையிலும் <DT>quick sort</DT> செய்வோம்.
560
+
561
+ 141
562
+ 00:12:13,070 --> 00:12:17,070
563
+ <DT>slide</DT> ல் பார்த்த <DT>python code</DT> ஐ இங்கே ஒரு <DT>file</DT> ல் எழுதியுள்ளோம்.
564
+
565
+ 142
566
+ 00:12:17,070 --> 00:12:20,320
567
+ slide ல் இருந்த அதே <DT>code</DT> இதுதானா என்பதை சரிபார்க்கலாம்.
568
+
569
+ 143
570
+ 00:12:20,345 --> 00:12:28,786
571
+ நாம் அதை முயற்சி செய்து <DT>run</DT> செய்யலாம் மற்றும் அது செயல்படுகிறதா என்று சரிபார்க்கலாம். <DT>call python</DT>, இந்த <DT>function</DT> ஐ <DT>import</DT> செய்கிறோம்.
572
+
573
+ 144
574
+ 00:12:32,849 --> 00:12:37,699
575
+ இது மீண்டும் ஒரு வகையான <DT>sorts</DT> <DT>function</DT> என்பதை நினைவில் கொள்ளுங்கள். எதையாவது <DT>sort</DT> செய்து அதன் விளைவைப் பார்க்க விரும்பினால்.
576
+
577
+ 145
578
+ 00:12:37,753 --> 00:12:40,870
579
+ நாம் அதற்கு ஒரு <DT>name</DT> ஐ <DT>assign</DT> செய்ய வேண்டும். பின்னர் அந்த <DT>name</DT> ஐ <DT>sort</DT> செய்து, பிறகு <DT>name</DT> ஐ சரிபார்க்க வேண்டும்.
580
+
581
+ 146
582
+ 00:12:40,909 --> 00:12:48,137
583
+ எடுத்துக்காட்டாக, 500 முதல் 0 வரையிலான <DT>range</DT> of <DT>values</DT> ஐ எடுத்துக் கொள்வோம்.
584
+
585
+ 147
586
+ 00:12:50,287 --> 00:12:58,090
587
+ இப்போது நாம் <DNT>quicksort l</DNT> என்று சொன்னால், அதற்கு <DNT>of course</DNT> முடிவைக் கொடுக்க வேண்டும்.
588
+
589
+ 148
590
+ 00:13:01,020 --> 00:13:02,468
591
+ பிறகு <DNT>l</DNT> சரியாக <DT>sorted</DT> செய்யப்படும்.
592
+
593
+ 149
594
+ 00:13:04,311 --> 00:13:09,523
595
+ நீங்கள் அனைத்தையும் பார்க்க முடியாது. ஆனால் 83 84 முதல் நூறு வரை மற்றும் இரண்டு 500 வரை பார்க்க முடியும்.
596
+
597
+ 150
598
+ 00:13:10,995 --> 00:13:16,480
599
+ இப்போது, 1000 என்று சொன்னால், <DT>insertion sort</DT> ல் நமக்கு இருந்த அதே <DT>problem</DT> உள்ளது.
600
+
601
+ 151
602
+ 00:13:17,897 --> 00:13:22,596
603
+ பின்னர் நாம் இதை <DT>quicksort</DT> செய்ய முயற்சிக்கிறோம். நீங்கள் இதை <DT>recursion depth</DT> ஆல் பெறுவீர்கள்.
604
+
605
+ 152
606
+ 00:13:22,621 --> 00:13:29,644
607
+ <DT>worst case</DT> ல் நாம் பார்ப்பது போல, <DT>quick sort</DT> ஆனது <DT>insertion sort</DT> ஐ போலவே செயல்படுகிறது மற்றும் இது மோசமான case.
608
+
609
+ 153
610
+ 00:13:29,669 --> 00:13:33,759
611
+ இதைப் போக்க, நாம் வழக்கமான காரியத்தைச் செய்ய வேண்டும். <DT>SYS module</DT> ஐ <DT>import</DT> செய்ய வேண்டும்.
612
+
613
+ 154
614
+ 00:13:33,759 --> 00:13:35,409
615
+ <DT>recursion limit</DT> ஐ <DT>set</DT> செய்யவும்.
616
+
617
+ 155
618
+ 00:13:36,658 --> 00:13:43,652
619
+ எனவே, பொருத்தமான பெரிய ஒன்று பத்தாயிரம் அல்லது நூறாயிரம் என்று சொல்லுங்கள். பின்னர் அதை <DT>quicksort</DT> செய்ய சொன்னால் எந்த problem உம் இல்லை.
620
+
621
+ 156
622
+ 00:13:44,779 --> 00:13:49,299
623
+ <DT>python</DT> ல் இந்த <DT>recursion limit</DT> ஐ manually set செய்ய வேண்டிய மற்றொரு case இதுவாகும்.
624
+
625
+ 157
626
+ 00:13:49,647 --> 00:13:56,929
627
+ உண்மையில் நாம் பார்க்கக்கூடிய ஒரு விஷயம் என்னவென்றால், <DT>quicksort</DT> என்பது நாம் நம்புவது போல் நல்லதல்ல, ஏனெனில்.
628
+
629
+ 158
630
+ 00:13:57,008 --> 00:14:02,080
631
+ எடுத்துக்காட்டாக, 7500 என்று ஏதாவது <DT>size</DT> ஐ <DT>instance sort</DT> செய்யவும்.
632
+
633
+ 159
634
+ 00:14:05,504 --> 00:14:09,554
635
+ பின்னர் அது ஒரு புலப்படும் நேரம் எடுக்கும். எனவே, <DNT>n log n</DNT> என்று <DT>merge sort </DT> ஐ பார்த்தோம்.
636
+
637
+ 160
638
+ 00:14:09,790 --> 00:14:13,700
639
+ 5,000 மற்றும் 10000 மற்றும் 100,000 கூட <DT>instantaneously</DT> செய்யும்.
640
+
641
+ 161
642
+ 00:14:13,832 --> 00:14:18,129
643
+ தெளிவாக <DT>quick sort</DT> மற்றும் <DT>merge sort </DT> செயல்படாது.
644
+
645
+ 162
646
+ 00:14:18,165 --> 00:14:22,480
647
+ மற்றும் உண்மையில் <DT>quick sort</DT> க்கு <DT>order</DT> <DNT>n log n</DNT> <DT>merge sort </DT> இல்லை என்பதை நாம் பார்ப்போம்.
648
+
649
+ 163
650
+ 00:14:22,511 --> 00:14:25,090
651
+ நாம் விரும்பியபடி நடத்தை.
652
+
653
+ 164
654
+ 00:14:25,090 --> 00:14:28,539
655
+ அதற்குக் காரணம், நாம் <DT>median</DT> ஐ பயன்படுத்தாமல், split செய்வதற்கான முதல் <DT>value</DT> ஐ பயன்படுத்துகிறோம்.
656
+
657
+ 165
658
+ 00:14:28,539 --> 00:14:33,909
659
+ அதை அடுத்த lecture ல் பார்ப்போம். ஏன் <DT>quick sort</DT> ல் உண்மையி���் ஒரு worst case <DNT>order n log n algorithm</DNT> அல்ல.
Translated_SRT/Week4_Lecture3_Cleaned_Tagged.ta.srt ADDED
@@ -0,0 +1,660 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ 1
2
+ 00:00:02,246 --> 00:00:06,190
3
+ <DT>merge sort </DT> என்பது <DT>order</DT> <DNT>n log n</DNT> <DT>sorting algorithm</DT> என்று பார்த்தோம்.
4
+
5
+ 2
6
+ 00:00:06,190 --> 00:00:10,509
7
+ ஆனால் இது சில குறைபாடுகளைக் கொண்டுள்ளது. இது சில நேரங்களில் <DT>impractical</DT> ஆகிறது.
8
+
9
+ 3
10
+ 00:00:10,849 --> 00:00:14,740
11
+ முக்கிய பிரச்சனை என்னவென்றால், <DT>merging</DT> க்கு <DT>extra space</DT> தேவைப்படுகிறது.
12
+
13
+ 4
14
+ 00:00:14,869 --> 00:00:19,076
15
+ <DT>recursion</DT> ஐ பயன்படுத்தாமல் <DT>implement merge sort </DT> செய்வது கடினம் என்பதையும் நாம் பார்த்தோம்.
16
+
17
+ 5
18
+ 00:00:19,101 --> 00:00:22,108
19
+ மற்றும் <DT>recursion</DT> <DT>programming language</DT> ல் அதன் சொந்த செலவைக் கொண்டுள்ளது.
20
+
21
+ 6
22
+ 00:00:24,841 --> 00:00:26,952
23
+ எனவே, <DT>space problem</DT> ஐ தீர்க்கலாம்.
24
+
25
+ 7
26
+ 00:00:27,736 --> 00:00:33,310
27
+ <DT>merge function</DT> ஐ <DT>implement</DT> செய்யும் <DT>பொருட்டு</DT>, <DT>merge sort </DT> க்கு <DT>extra space</DT> தேவைப்படுகிறது.
28
+
29
+ 8
30
+ 00:00:33,590 --> 00:00:38,500
31
+ நாம் ஏன் <DT>merge</DT> செய்ய வேண்டும்? நாம் <DT>merge</DT> செய்ய வேண்டியதன் காரணம், நாம் <DT>merge sort </DT> ஐ செய்யும்போது,
32
+
33
+ 9
34
+ 00:00:38,500 --> 00:00:45,759
35
+ நம்மிடம் <DT>initial list</DT> உள்ளது. பின்னர் அதை இரண்டு பகுதிகளாக split செய்கிறோம். ஆனால், பொதுவாக <DT>left</DT> இலிருந்து <DT>items</DT> கள் இருக்கலாம்.
36
+
37
+ 10
38
+ 00:00:45,759 --> 00:00:50,409
39
+ <DNT>right</DNT> இலிருந்து <DT>bigger than items</DT>. எனவே, <DT>instance</DT> ஆக நாம் சொன்னால்,
40
+
41
+ 11
42
+ 00:00:50,450 --> 00:00:54,250
43
+ <DT>left</DT> ல் <DT>even numbers</DT> மற்றும் <DNT>right</DNT> ல் <DT>odd numbers</DT>.
44
+
45
+ 12
46
+ 00:00:54,550 --> 00:00:58,900
47
+ இரண்டு பக்கங்களிலிருந்தும் <DT>numbers alternately</DT> எடுத்துக்கொண்டு <DT>merge</DT> செய்ய வேண்டும்.
48
+
49
+ 13
50
+ 00:00:59,630 --> 00:01:09,646
51
+ <DT>divided problem</DT> ன் <DT>left</DT> பக்கத்தில் உள்ள அனைத்தும் <DT>divided problem</DT> ன் <DNT>வலது</DNT> பக்கத்தில் உள்ள அனைத்தையும் விட சிறியதாக இருக்கும்படி <DT>arrange</DT> செய்தால்,
52
+
53
+ 14
54
+ 00:01:10,593 --> 00:01:12,146
55
+ பின்னர், நாம் அனைத்தையும் <DT>merge</DT> செய்ய தேவையில்லை.
56
+
57
+ 15
58
+ 00:01:12,699 --> 00:01:18,130
59
+ மேலும் இது <DT>merge</DT> செய்வதற்கு, கூடுதல் space தேவைப்படும் <DT>problem</DT> ஐ தவிர்க்கலாம்.
60
+
61
+ 16
62
+ 00:01:20,689 --> 00:01:23,702
63
+ <DT>merge</DT> இல்லாமல் எப்படி <DT>divide</DT> மற்றும் <DT>conquer</DT> செய்வது.
64
+
65
+ 17
66
+ 00:01:25,243 --> 00:01:27,659
67
+ <DT>median value</DT> நமக்குத் தெரியும் என்று வைத்துக்கொள்வோம்.
68
+
69
+ 18
70
+ 00:01:27,659 --> 00:01:33,716
71
+ ஒரு <DT>set</DT> ல் உள்ள <DT>median value</DT> என்பது <DT>half</DT> the <DT>elements</DT> are <DT>smaller than half</DT> are <DT>bigger</DT> ஆக இருக்கும் <DT>value</DT> என்பதை நினைவில் கொள்ளுங்கள்.
72
+
73
+ 19
74
+ 00:01:35,649 --> 00:01:42,124
75
+ <DT>median</DT> விட <DT>smaller than</DT> <DT>values</DT> அனைத்தையும் <DT>left half</DT> க்கும், <DT>median</DT> விட <DT>bigger than</DT> அனைத்தையும் <DNT>right half</DNT> க்கும் நகர்த்தலாம்.
76
+
77
+ 20
78
+ 00:01:43,883 --> 00:01:52,180
79
+ நாம் பார்ப்பது போல, <DT>list</DT> ன் <DT>length</DT> க்கு <DT>time proportional</DT> ஆக புதிய <DT>array</DT> வை உருவாக்காமல் இதைச் செய்யலாம்.
80
+
81
+ 21
82
+ 00:01:53,816 --> 00:02:00,989
83
+ இந்த <DT>rearrangement</DT> ஐ செய்த பிறகு, அனைத்து <DT>smaller values</DT> களையும் <DT>left half</DT> க்கும் <DT>bigger values</DT> களை <DNT>right half</DNT> க்கும் நகர்த்தவும்.
84
+
85
+ 22
86
+ 00:02:00,989 --> 00:02:06,443
87
+ இந்த <DT>divide</DT> மற்றும் <DT>conquer strategy</DT> ஐ நாம் <DT>recursively</DT> பயன்படுத்தலாம். மேலும் <DNT>right</DNT> மற்றும் <DT>left half</DT> ஐ தனித்தனியாக <DT>sort</DT> செய்யலாம்.
88
+
89
+ 23
90
+ 00:02:07,519 --> 00:02:12,520
91
+ மேலும் <DT>left half</DT> ல் உள்ள அனைத்தும், <DNT>right half</DNT> ல் உள்ள அனைத்தையும் விட <DT>சிறியது</DT> என்று நாம் உத்தரவாதம் அளித்துள்ளோம்.
92
+
93
+ 24
94
+ 00:02:13,019 --> 00:02:17,050
95
+ இது தானாகவே இதற்கு அர்த்தம் <DT>divide</DT> மற்றும் <DT>conquer</DT> step க்கு பிறகு,
96
+
97
+ 25
98
+ 00:02:17,050 --> 00:02:24,442
99
+ <DT>left half</DT> ஏற்கனவே <DNT>right half</DNT> க்கு கீழே இருப்பதால், non-trivial முறையில் answers களை combine செய்ய வேண்டிய அவசியமில்லை. நாம் <DT>merge</DT> செய்ய தேவையில்லை.
100
+
101
+ 26
102
+ 00:02:28,309 --> 00:02:34,210
103
+ இந்த <DT>strategy</DT> ஐ பயன்படுத்தினால், <DT>merge sort </DT> போன்ற ஒரு <DT>recursive equation</DT> ஐ பெறுவோம்.
104
+
105
+ 27
106
+ 00:02:34,210 --> 00:02:42,370
107
+ <DNT>length n</DNT> இன் <DT>list</DT> ஐ <DT>sort</DT> செய்வதற்கு <DT>time</DT> தேவைப்படும். முதலில் <DNT>size n</DNT> இன் இரண்டு <DT>lists</DT> களை 2 ஆல் <DT>sort</DT> செய்ய வேண்டும்.
108
+
109
+ 28
110
+ 00:02:42,370 --> 00:02:50,039
111
+ நாம் <DNT>order n </DNT> ஐ செய்வோம் <DT>merging</DT> ஆக அல்ல. <DT>list</DT> ஐ <DT>decompose</DT> செய்வதற்காக. அதனால் அனைத்து <DT>smaller values</DT> களும் <DT>left</DT> மற்றும் <DNT>right</DNT> இல் இருக்கும்.
112
+
113
+ 29
114
+ 00:02:50,064 --> 00:02:54,483
115
+ நாம் <DT>recursive step</DT> செய்வதற்கு முன் rearranging <DT>step</DT> <DNT>order n</DNT> ஆகும்.
116
+
117
+ 30
118
+ 00:02:54,508 --> 00:02:57,879
119
+ அதேசமயம் <DT>merge</DT> என்பது <DT>recursive step</DT> க்கு பின் வரும் <DT>step</DT> ஆகும்.
120
+
121
+ 31
122
+ 00:02:57,879 --> 00:03:03,879
123
+ இது முந்தைய <DT>case</DT> ல் <DNT>order n</DNT> ஆக இருந்தது. ஆனால் நாம் <DT>recurrence</DT> ஐ <DT>solve</DT>செய்தால் அதே ஒன்றுதான். நமக்கு மற்றொரு <DNT>order n log n algorithm</DNT> கிடைக்கும்.
124
+
125
+ 32
126
+ 00:03:08,730 --> 00:03:12,340
127
+ இந்த <DT>approach</DT> இல் பெரிய <DT>bottleneck</DT> என்னவென்றால் <DT>median</DT> ஐ கண்டறிவதாகும்.
128
+
129
+ 33
130
+ 00:03:13,190 --> 00:03:20,663
131
+ ஒரு <DT>list</DT> ஐ <DT>sorting</DT> செய்வதன் நன்மைகளில் ஒன்று, <DT>sorting</DT> க்கு பின் <DT>median</DT> ஐ middle <DT>element</DT> ஆக நாம் அடையாளம் காணலாம் என்பதை நினைவில் கொள்ளுங்கள்.
132
+
133
+ 34
134
+ 00:03:21,890 --> 00:03:24,336
135
+ இப்போது, இங்கே நாம் <DT>sorting</DT> செய்வதற்கு முன் <DT>median</DT> ஐ கேட்கிறோம்.
136
+
137
+ 35
138
+ 00:03:24,996 --> 00:03:28,539
139
+ ஆனால், நமது நோக்கம் <DT>sort</DT> செய்வது. அது <DT>paradoxical</DT> ஆகும்.
140
+
141
+ 36
142
+ 00:03:28,539 --> 00:03:33,219
143
+ <DT>sorting</DT>ன் <DT>output</DT> <DT>sorting</DT> ஆன <DT>input</DT> ஆக இருக்க வேண்டும் என நாம் விரும்பினால்.
144
+
145
+ 37
146
+ 00:03:34,892 --> 00:03:42,580
147
+ எனவே, <DT>list</DT> ஐ <DNT>split</DNT> செய்து <DT>element</DT> ன் மிகவும் எளிமையான தேர்வு மூலம் <DT>strategy</DT> யை முயற்சிக்க வேண்டும் என்பதே இதன் பொருள்.
148
+
149
+ 38
150
+ 00:03:42,825 --> 00:03:46,780
151
+ <DT>median</DT> ஐ தேடுவதற்குப் பதிலாக, <DNT>list A</DNT> இல் சில <DT>value</DT> ஐ பெறுவோம்.
152
+
153
+ 39
154
+ 00:03:46,780 --> 00:03:49,689
155
+ மற்றும் <DT>pivot element</DT> என அழைக்கப்படுவதைப் பயன்படுத்தவும்.
156
+
157
+ 40
158
+ 00:03:49,689 --> 00:03:56,769
159
+ இந்த <DT>pivot</DT> ஐ பொறுத்து <DNT>A</DNT> என்று பிரிக்கிறோம். இதன���ல் அனைத்து <DT>smaller elements</DT> களும் <DT>left</DT> ஆகவும், <DT>bigger elements</DT> கள் அனைத்தும் <DNT>right</DNT> ஆகவும் இருக்கும்.
160
+
161
+ 41
162
+ 00:04:00,223 --> 00:04:11,636
163
+ இந்த <DT>algorithm</DT> <DT>quick sort</DT> என்று அழைக்கப்படுகிறது. இது 1960 களில் <DT>Tony Four</DT> என்ற நபரால் கண்டுபிடிக்கப்பட்டது மற்றும் இது மிகவும் பிரபலமான <DT>sorting algorithms</DT> களில் ஒன்றாகும்.
164
+
165
+ 42
166
+ 00:04:12,103 --> 00:04:16,082
167
+ பொதுவாக <DT>array</DT> இன் <DT>list</DT> ல் முதல் <DT>element</DT> ஆக இருக்கும் <DT>pivot element</DT> ஐ தேர்வு செய்கிறோம்.
168
+
169
+ 43
170
+ 00:04:16,759 --> 00:04:22,500
171
+ இந்த <DT>pivot</DT> இன் முடிவைப் பொறுத்து <DT>lower part</DT> லும் <DT>upper part</DT> லும் <DNT>partition A</DNT> செய்கிறோம்.
172
+
173
+ 44
174
+ 00:04:22,500 --> 00:04:24,943
175
+ எனவே, அனைத்து <DT>smaller elements</DT> களையும் <DT>left</DT> க்கு நகர்த்துகிறோம்.
176
+
177
+ 45
178
+ 00:04:25,056 --> 00:04:28,149
179
+ மற்றும் அனைத்து <DT> bigger elements</DT> முதல் <DNT>right</DNT> வரை <DT>pivotal</DT> தேர்வைப் பொறுத்து.
180
+
181
+ 46
182
+ 00:04:29,523 --> 00:04:34,163
183
+ இரண்டிற்கும் இடையே <DT>pivot</DT> வருவதை உறுதிசெய்கிறோம். ஏனெனில் <DT>array</DT> ல் முதல் <DT>element</DT> <DT>pivot</DT> ஆக எடுத்துள்ளோம்.
184
+
185
+ 47
186
+ 00:04:34,190 --> 00:04:41,036
187
+ இதற்குப் பிறகு நாம் அதை <DT>lower</DT> மற்றும் <DT>upper bound</DT> க்கு இடையில் உள்ள <DT>center</DT> க்கு நகர்த்த விரும்புகிறோம். பின்னர், இரண்டு <DT>partitions</DT> களை <DT>recursively sort</DT> செய்கிறோம்.
188
+
189
+ 48
190
+ 00:04:44,456 --> 00:04:48,910
191
+ ஒரு பொதுவான <DT>list</DT> ல் <DT>quick sort</DT> எவ்வாறு வேலை செய்யும் என்பது பற்றிய <DT>high level view</DT> இங்கே உள்ளது.
192
+
193
+ 49
194
+ 00:04:48,910 --> 00:04:56,143
195
+ இது தான் நமது <DT>list</DT> என்று வைத்துக்கொள்வோம். <DT>list</DT> ன் தொடக்கத்தை <DT>pivot element</DT> ஆக முதல் <DT>element</DT> ஐ அடையாளம் காண்போம்.
196
+
197
+ 50
198
+ 00:04:56,950 --> 00:05:01,569
199
+ இப்போது, மீதமுள்ள <DT>elements</DT> களில், எந்த <DNT>ones</DNT> <DT>smaller</DT> மற்றும் எந்த <DNT>ones</DNT> <DT>bigger</DT> என்பதைக் கண்டுபிடிக்க வேண்டும்.
200
+
201
+ 51
202
+ 00:05:02,410 --> 00:05:11,510
203
+ இதை எப்படிச் செய்வோம் என்று சொல்லாமல், 32, 22 மற்றும் 13 ஆகிய மூன்று <DT>elements</DT> களை <DT>smaller</DT> ஆகவும் <DNT>yellow</DNT> ல் <DT>marked </DT> செய்யபட்டதாகவும் அடையாளப்படுத்துகிறோம்.
204
+
205
+ 52
206
+ 00:05:11,810 --> 00:05:15,069
207
+ மற்றும் <DNT>green</DNT> இல் <DT>marked </DT> செய்யப்பட்ட மற்ற 4 <DT>elements</DT> கள் பெரியவை.
208
+
209
+ 53
210
+ 00:05:16,160 --> 00:05:20,040
211
+ முதல் <DT>step</DT> உண்மையில் இந்த <DT>criterion</DT> ஐ பொறுத்து <DT>partition</DT> செய்ய வேண்டும்.
212
+
213
+ 54
214
+ 00:05:20,040 --> 00:05:24,810
215
+ நாம் இந்த <DT>elements</DT> களை நகர்த்த வேண்டும். அதனால் அவை இரண்டு <DT>blocks</DT> ஆக வரும்.
216
+
217
+ 55
218
+ 00:05:24,810 --> 00:05:27,550
219
+ அந்த 13, 32 மற்றும் 22 <DT>left</DT> பக்கம் வரும்.
220
+
221
+ 56
222
+ 00:05:27,550 --> 00:05:33,430
223
+ 63 57, 91 மற்றும் 78, <DNT>right</DNT> மற்றும் <DT>pivot element</DT> 43 <DT>middle</DT> ல் வருகிறது.
224
+
225
+ 57
226
+ 00:05:33,947 --> 00:05:36,781
227
+ இது <DT>rearranging step</DT> மற்றும் இப்போது
228
+
229
+ 58
230
+ 00:05:37,060 --> 00:05:41,529
231
+ நாம் <DNT>yellow bits</DNT> மற்றும் <DNT>green bits</DNT> ஆகியவற்றை <DT>recursively sort</DT> செய்வோம். பிறகு அதைச் செய்யலாம் என்று கருதினால்,
232
+
233
+ 59
234
+ 00:05:41,529 --> 00:05:45,480
235
+ ந���்மிடம் ஒரு <DT>sorted array</DT> உள்ளது மற்றும் அனைத்து <DNT>yellow</DNT> பொருட்களும் <DT>smaller than </DT>43 ஆக இருப்பதை கவனிக்கவும்.
236
+
237
+ 60
238
+ 00:05:45,480 --> 00:05:49,509
239
+ மேலும் அனைத்து <DNT>green</DNT> விஷயங்களும் <DT>bigger than</DT> 43. மேலும் <DT>merging</DT> செய்ய தேவையில்லை.
240
+
241
+ 61
242
+ 00:05:52,243 --> 00:05:54,899
243
+ எனவே, <DT>partitioning</DT> எவ்வாறு செயல்படுகிறது என்பதைப் பார்ப்போம்.
244
+
245
+ 62
246
+ 00:05:54,899 --> 00:05:59,350
247
+ இங்கே நம்மிடம் முந்தைய <DT>list</DT> ல் உள்ளது. மேலும் 43 ஐ நமது <DT>pivot element</DT> ஆக <DT>marked </DT> செய்துள்ளோம்.
248
+
249
+ 63
250
+ 00:05:59,350 --> 00:06:03,112
251
+ மீதமுள்ள <DT>elements</DT> களை <DT>scan</DT> செய்து அவற்றை <DT>divide</DT> செய்ய விரும்புகிறோம்.
252
+
253
+ 64
254
+ 00:06:03,137 --> 00:06:08,742
255
+ இரண்டு குழுக்கள், <DT>smaller than</DT> 43, <DNT>yellow ones</DNT>, <DT>bigger than</DT> 43, <DNT>green ones</DNT> மற்றும் அவற்றை <DT>rearrange</DT> செய்யவும்.
256
+
257
+ 65
258
+ 00:06:09,962 --> 00:06:13,839
259
+ நாம் என்ன செய்வோம் இரண்டு <DT>pointers</DT> கள் <DNT>yellow pointer</DNT> மற்றும் <DNT>green pointer</DNT> ஐ வைத்திருப்போம்.
260
+
261
+ 66
262
+ 00:06:14,155 --> 00:06:19,081
263
+ மேலும் பொதுவான விதி என்னவென்றால், எந்த ஒரு <DT>point</DT>லும் நாம் சிறிது <DT>distance</DT> ல் இருப்போம்.
264
+
265
+ 67
266
+ 00:06:19,355 --> 00:06:24,129
267
+ நான் <DNT>orange</DNT> நிறத்தில் வரையப் போகும் <DT>visible</DT> <DNT>yellow pointer</DNT> மற்றும் <DNT>green pointer</DNT>.
268
+
269
+ 68
270
+ 00:06:24,129 --> 00:06:29,165
271
+ இவை இந்த <DT>order</DT> ல் நகரும் <DNT>orange pointer</DNT> அல்லது <DNT>yellow pointer</DNT> எப்போதும் <DNT>green pointer</DNT> பின்னால் இருக்கும்.
272
+
273
+ 69
274
+ 00:06:29,565 --> 00:06:35,397
275
+ நீங்கள் பராமரிக்கும் <DT>inductive property</DT> என்னவென்றால், இந்த <DT>elements</DT> கள் 43 ஐ விட <DT>smaller than</DT> அல்லது சமமாகவோ இருக்கும்.
276
+
277
+ 70
278
+ 00:06:35,910 --> 00:06:40,643
279
+ இந்த <DT>elements</DT> கள் <DT>bigger than</DT> 43 மற்றும் இந்த <DT>elements</DT> கள் <DT>தெரியவில்லை</DT>.
280
+
281
+ 71
282
+ 00:06:42,577 --> 00:06:46,139
283
+ நாம் செய்ய முயற்சிப்பது என்னவென்றால், <DT>left</DT> ல் இருந்து <DNT>right</DNT> க்கு நகர்த்த முயற்சிக்கிறோம்.
284
+
285
+ 72
286
+ 00:06:46,139 --> 00:06:49,589
287
+ ஒவ்வொரு முறையும் <DT>unknown elements</DT> ஐ காணும் அனைத்து <DT>unknown elements</DT> களையும் <DT>classify</DT> செய்யவும்.
288
+
289
+ 73
290
+ 00:06:49,552 --> 00:06:52,660
291
+ இந்த property ஐ நாம் maintain பண்ண இரண்டு <DT>pointers</DT> களை மாற்றுவோம்.
292
+
293
+ 74
294
+ 00:06:52,700 --> 00:06:57,699
295
+ 43 க்கும் முதல் <DT>pointer</DT> க்கும் இடையில் <DT>elements smaller than</DT> 43 அல்லது அதற்கு சமமாக உள்ளன.
296
+
297
+ 75
298
+ 00:06:57,699 --> 00:07:01,494
299
+ முதல் <DT>pointer</DT> க்கும் இரண்டாவது <DT>pointer</DT> க்கும் இடையில் நம் <DT>elements</DT> கள் கண்டிப்பாக 43 க்கு <DT>greater</DT> ஆக உள்ளது.
300
+
301
+ 76
302
+ 00:07:01,752 --> 00:07:05,230
303
+ மற்றும் <DNT>green pointer</DNT> இன் <DNT>right</DNT> பக்கம் இன்னும் <DT>scanned</DT> செய்யப்படாதவை உள்ளன.
304
+
305
+ 77
306
+ 00:07:07,023 --> 00:07:10,000
307
+ எனவே, ஆரம்பத்தில் எதுவும் தெரியவில்லை. பின்னர் நாம் 32 ஐ பார்க்கிறோம்.
308
+
309
+ 78
310
+ 00:07:10,000 --> 00:07:14,618
311
+ 32 43 ஐ விட <DT>smaller than</DT> ஆக இருப்பதால், <DNT>yellow pointer</DNT> ஐ நகர்த்துகிறோம். மேலும் <DNT>green pointer</DNT> ஐ உடன் தள்ளுகிறோம்.
312
+
313
+ 79
314
+ 00:07:14,643 --> 00:07:16,949
315
+ தெரியாத விஷயம் 22 இல் தொடங்குகிறது.
316
+
317
+ 80
318
+ 00:07:16,949 --> 00:07:22,060
319
+ <DNT>yellow</DNT> மற்றும் <DNT>green pointer</DNT> ஆகியவற்றுக்கு இடையே எதுவும் இல்லை. <DT>value bigger than</DT> 43 ஐ நாம் இன்னும் கண்டுபிடிக்கவில்லை.
320
+
321
+ 81
322
+ 00:07:22,949 --> 00:07:24,910
323
+ எனவே, 22 க்கும் அதே நடக்கும்.
324
+
325
+ 82
326
+ 00:07:24,910 --> 00:07:28,629
327
+ இப்போது, 78ஐ பார்க்கும்போது, 78 <DT>bigger than</DT> 43 என்பதைக் கவனிக்கிறோம்.
328
+
329
+ 83
330
+ 00:07:29,008 --> 00:07:33,635
331
+ இப்போது, நாம் <DNT>green pointer</DNT> ஐ மட்டுமே நகர்த்துகிறோம். மேலும் <DNT>yellow pointer</DNT> ஐ அல்ல. இப்போது, இந்த 3 இடைவெளிகளை முன்பு போலவே வைத்திருக்கிறோம்.
332
+
333
+ 84
334
+ 00:07:33,935 --> 00:07:36,819
335
+ இது 43 க்கு குறைவான <DT>equal</DT> ஆன பகுதி என்பதை நினைவில் கொள்ளுங்கள்.
336
+
337
+ 85
338
+ 00:07:36,819 --> 00:07:44,350
339
+ இது <DT>greater than</DT> 43 உள்ள பகுதி மற்றும் இந்த பகுதி unknown <DNT>right</DNT>, நாம் இந்த வழியில் தொடர்கிறோம்.
340
+
341
+ 86
342
+ 00:07:44,350 --> 00:07:48,189
343
+ இப்போது நாம் 63 ஐ பார்க்கிறோம். மீண்டும் 63 <DNT>green zone</DNT> ஐ நீட்டிக்கிறது.
344
+
345
+ 87
346
+ 00:07:48,189 --> 00:07:52,540
347
+ 57 ஒரு <DNT>green zone</DNT> ஐ நீட்டிக்கிறது 91 ஒரு <DNT>green zone</DNT> ஐ நீட்டிக்கிறது.
348
+
349
+ 88
350
+ 00:07:52,540 --> 00:07:56,470
351
+ இப்போது, 13 ஐ கண்டுபிடிக்கும்போது நாம் ஏதாவது செய்ய வேண்டும்.
352
+
353
+ 89
354
+ 00:07:56,470 --> 00:08:00,100
355
+ 13 என்பது இப்போது <DNT>yellow zone</DNT> ல் சேர்க்கப்பட வேண்டிய ஒரு <DT>element</DT>.
356
+
357
+ 90
358
+ 00:08:00,205 --> 00:08:03,705
359
+ ஒரு <DT>strategy</DT> நிறைய மாற்றங்களைச் செய்ய வேண்டும்.
360
+
361
+ 91
362
+ 00:08:03,730 --> 00:08:07,360
363
+ நாம் 13 ஐ 22 இருக்கும் இடத்திற்கு அல்லது 22 க்குப் பிறகு நகர்த்துகிறோம்.
364
+
365
+ 92
366
+ 00:08:07,360 --> 00:08:10,180
367
+ மேலும் 78 இல் இருந்து எல்லாவற்றையும் <DNT>right</DNT> க்கு தள்ளுகிறோம்.
368
+
369
+ 93
370
+ 00:08:10,250 --> 00:08:15,220
371
+ ஆனால் உண்மையில், ஒரு புத்திசாலித்தனமான <DT>strategy</DT> என்னவென்றால், 13 இங்கே செல்ல வேண்டும் என்று சொல்வது.
372
+
373
+ 94
374
+ 00:08:17,605 --> 00:08:21,519
375
+ நாம் space ஐ உருவாக்க வேண்டும். ஆனால் <DT>space</DT> ஐ உருவாக்குவதற்கு பதிலாக.
376
+
377
+ 95
378
+ 00:08:21,519 --> 00:08:30,399
379
+ எப்படியும் <DNT>green</DNT> விஷயங்களை நாம் <DT>sort</DT> செய்யபோகிறோம். அது ஒரு பொருட்டல்ல என்று சொல்லலாம். இரண்டையும் எந்த வழியில் <DT>sort</DT> செய்கிறோம் என்பது எப்படி முக்கியம். இந்த 78ஐ எடுத்து 13க்கு நகர்த்துவோம்.
380
+
381
+ 96
382
+ 00:08:30,399 --> 00:08:33,009
383
+ எந்த மாற்றத்தையும் செய்வதற்கு பதிலாக.
384
+
385
+ 97
386
+ 00:08:33,009 --> 00:08:36,370
387
+ <DNT>green</DNT> zone ல் முதல் <DT>element</DT> ஐ <DT>exchange</DT> செய்கிறோம்.
388
+
389
+ 98
390
+ 00:08:36,370 --> 00:08:38,320
391
+ நாம் இதுவரை பார்க்கும் <DT>element</DT> உடன்.
392
+
393
+ 99
394
+ 00:08:38,320 --> 00:08:41,980
395
+ அது தானாகவே <DNT>yellow zone</DNT> மற்றும் <DNT>green zone</DNT> இரண்டையும் சரியாக நீட்டிக்கும்.
396
+
397
+ 100
398
+ 00:08:42,080 --> 00:08:49,299
399
+ நமது அடுத்த <DT>step</DT> 13 <DT>smaller than</DT> 43 என்பதை கண்டறிந்து, அதை 73 உடன் <DT>இடமாற்று</DT> செய்வது.
400
+
401
+ 101
402
+ 00:08:49,399 --> 00:08:54,070
403
+ இப்போது, நம்மிடம் உள்ள <DT>pivot</DT> ன் <DNT>right</DNT> க்கு ஒரு <DT>intermediate stage</DT> ஐ அடைந்துள்ளோம்.
404
+
405
+ 102
406
+ 00:08:54,070 --> 00:08:58,360
407
+ எல்லாவற்றையும் scanned செய்து, அவற்றை <DT>smaller</DT> ஆக வகைப்படுத்தியுள்ளோம்.
408
+
409
+ 103
410
+ 00:08:58,360 --> 00:08:59,889
411
+ மற்றும் <DT>bigger</DT> ஐயும்.
412
+
413
+ 104
414
+ 00:09:00,716 --> 00:09:04,216
415
+ இப்போது, <DNT>yellow</DNT> விஷயங்களை 43க்கு <DT>left</DT> பக்கம் <DT>push</DT> செய்ய வேண்டும்.
416
+
417
+ 105
418
+ 00:09:05,036 --> 00:09:09,165
419
+ இப்போது, <DNT>yellow zone</DNT> ல் 13ஐ சேர்த்தபோது பார்த்த அதே <DT>problem</DT> மீண்டும் ஒருமுறை நமக்கு வந்துள்ளது.
420
+
421
+ 106
422
+ 00:09:09,190 --> 00:09:13,210
423
+ நாம் 43 ஐ சரியான இடத்திற்கு நகர்த்தினால், இங்கே அனைத்தையும் <DNT>left</DNT> க்கு நகர்த்த வேண்டும்.
424
+
425
+ 107
426
+ 00:09:13,404 --> 00:09:18,940
427
+ ஆனால், அதற்குப் பதிலாக இந்த 13ஐ <DNT>yellow zone</DNT> ல் கடைசி <DT>element</DT> ஆக எடுத்துக்கொள்ளலாம்.
428
+
429
+ 108
430
+ 00:09:18,940 --> 00:09:22,149
431
+ மற்றும் அதை அங்கே <DT>replace</DT> செய்யவும். 32 மற்றும் 22 ஐ shift செய்ய வேண்டாம்.
432
+
433
+ 109
434
+ 00:09:22,149 --> 00:09:26,759
435
+ இது <DT>order</DT> ஐ சீர்குலைக்கிறது. ஆனால் எப்படியும் இது <DT>unsorted</DT> செய்யாமல், <DT>unsorted</DT> ஆக உள்ளது.
436
+
437
+ 110
438
+ 00:09:27,632 --> 00:09:29,889
439
+ நாம் இதை செய்கிறோம். இப்போது நம்மிடம் உள்ளது.
440
+
441
+ 111
442
+ 00:09:30,001 --> 00:09:36,171
443
+ நாம் விரும்பியபடி <DT>array rearranged</DT> செய்யப்பட்டது. எனவே, <DT>left</DT> ல் உள்ள இவை அனைத்தும் <DT>smaller than</DT> <DT>pivot</DT>.
444
+
445
+ 112
446
+ 00:09:37,244 --> 00:09:41,856
447
+ <DT>pivot</DT> நடுவில் உள்ளது. மற்றும் <DNT>right</DNT> ல் உள்ள அனைத்தும் <DT>bigger than</DT> <DT>pivot</DT>.
448
+
449
+ 113
450
+ 00:09:46,550 --> 00:09:53,830
451
+ இங்கே <DT>python</DT> இன் ஒரு <DT>implementation</DT> உள்ளது. <DT>quick sort</DT> என்பது <DT>merge sort </DT> மற்றும் <DT>binary research</DT> போன்றவற்றைக் கொண்டிருக்கும் என்பதை நினைவில் கொள்ளவும்.
452
+
453
+ 114
454
+ 00:09:53,830 --> 00:09:58,690
455
+ <DT>smaller</DT> மற்றும் <DT>smaller segments</DT> ல் அதை மீண்டும் மீண்டும் பயன்படுத்துகிறோம். பொதுவாக நாம் அதை <DT>pass</DT> செய்யவும்.
456
+
457
+ 115
458
+ 00:09:58,690 --> 00:10:03,523
459
+ நாம் <DNT>call A</DNT> என்ற <DT>list</DT> க்கும், <DT>segment</DT> ன் <DT>end points</DT> ஆன <DNT>left</DNT> மற்றும் <DNT>right</DNT>.
460
+
461
+ 116
462
+ 00:10:03,548 --> 00:10:07,238
463
+ நாம் ஒரு <DNT>slice l </DNT> முதல் <DNT>r minus 1</DNT> வரை செய்கிறோம்.
464
+
465
+ 117
466
+ 00:10:08,244 --> 00:10:13,210
467
+ இந்த <DT>slice</DT> 1 அல்லது 0 <DT>length</DT> ஆக இருந்தால், நாம் எதுவும் செய்ய மாட்டோம்.
468
+
469
+ 118
470
+ 00:10:14,223 --> 00:10:17,320
471
+ இல்லையெனில், நாம் முன்பு இருந்த இந்த <DT>partitioning strategy</DT> ஐ பின்பற்றுவோம்.
472
+
473
+ 119
474
+ 00:10:17,708 --> 00:10:22,120
475
+ அதாவது <DNT>l</DNT> இலிருந்து <DNT>r minus 1</DNT> வரை <DT>sorting</DT> செய்கிறோம்.
476
+
477
+ 120
478
+ 00:10:22,120 --> 00:10:24,220
479
+ எனவே, <DT>position l</DT>.
480
+
481
+ 121
482
+ 00:10:24,379 --> 00:10:25,899
483
+ இது <DT>pivot</DT> ஆகும்.
484
+
485
+ 122
486
+ 00:10:26,793 --> 00:10:29,671
487
+ <DNT>right</DNT> முதலில் இங்கே <DNT>yellow pointer</DNT> ஐ வைப்போம்.
488
+
489
+ 123
490
+ 00:10:31,011 --> 00:10:33,635
491
+ <DNT>yellow zone</DNT> இன் முடிவு என்று கூறுகிறது.
492
+
493
+ 124
494
+ 00:10:34,005 --> 00:10:38,500
495
+ உண்மையில் <DT>pivot</DT> உள்ளது அங்கு எதுவும் இல்லை. <DNT>yellow</DNT> என்பது <DNT>l plus 1</DNT> ஆகும்.
496
+
497
+ 125
498
+ 00:10:38,500 --> 00:10:50,781
499
+ இப்போது <DNT>green</DNT>ஐ தொடர அனுமதிக்கிறோம். ஒவ்வொரு <DT>time</DT>ம் <DNT>green</DNT> இல் ஒரு <DT>element</DT> ஐ பார்க்கும்போது புதிய <DNT>green</DNT> ஒன்���ைக் காட்டிலும் <DT>smaller than</DT> ஆக இருக்கும் <DT>pivot</DT> ஆகும். இது <DT>pivot</DT> என்பதை நினைவில் கொள்ளுங்கள்.
500
+
501
+ 126
502
+ 00:10:51,965 --> 00:10:55,661
503
+ <DNT>right</DNT> நாம் எப்போதாவது ஒரு <DNT>green</DNT> ஐ பார்த்தால், அடுத்த <DT>value</DT> ஐ.
504
+
505
+ 127
506
+ 00:10:55,686 --> 00:10:57,580
507
+ சரிபார்க்கப்பட வேண்டியதை விட <DT>smaller than</DT> அல்லது சமமானது.
508
+
509
+ 128
510
+ 00:10:57,590 --> 00:11:01,714
511
+ நாம் <DT>exchange</DT> செய்கிறோம். இதனால் இந்த <DT>value</DT> ஐ <DNT>yellow zone</DNT> ன் முடிவுக்குக் கொண்டு வருகிறோம்.
512
+
513
+ 129
514
+ 00:11:01,739 --> 00:11:03,220
515
+ இதைத்தான் 13ல் செய்தோம்.
516
+
517
+ 130
518
+ 00:11:03,344 --> 00:11:07,590
519
+ பின்னர், <DNT>yellow pointer</DNT> ஐ நகர்த்துகிறோம். இல்லையெனில் கண்டிப்பாக <DT>bigger</DT> <DT>value</DT> ஐ கண்டால் நகர்த்துவோம்.
520
+
521
+ 131
522
+ 00:11:07,590 --> 00:11:11,860
523
+ <DNT>green pointer</DNT> மட்டுமே <DT>for loop</DT> ஆல் மறைமுகமாக செய்யப்படுகிறது. மற்றொன்றை நகர்த்த மாட்டோம்.
524
+
525
+ 132
526
+ 00:11:11,929 --> 00:11:14,883
527
+ இதன் முடிவில் நமக்கு <DT>pivot</DT> உள்ளது.
528
+
529
+ 133
530
+ 00:11:15,894 --> 00:11:19,784
531
+ நாம் <DT>pivot</DT> க்கு சமமானதைக் காட்டிலும் குறைவானதைக் கொண்டுள்ளோம். பின்னர் <DT>greater than pivot</DT> ம் கொண்டுள்ளோம்.
532
+
533
+ 134
534
+ 00:11:19,809 --> 00:11:27,914
535
+ இந்த விதியின் முடிவில் நாம் அடைந்த அந்த intermediate stage இதுதான். இப்போது, நாம் <DT>pivot</DT> ஐ கண்டுபிடித்து சரியான இடத்திற்கு நகர்த்த வேண்டும். எனவே, <DNT>yellow</DNT> என்பதை நினைவில் கொள்ளுங்கள்.
536
+
537
+ 135
538
+ 00:11:29,241 --> 00:11:32,769
539
+ <DNT>yellow</DNT> <DNT>last</DNT> க்கு அப்பால் உள்ள <DT>position</DT> ஐ சுட்டிக்காட்டுகிறது.
540
+
541
+ 136
542
+ 00:11:32,769 --> 00:11:37,440
543
+ <DT>element அதை விட சிறியது</DT>. <DNT>yellow</DNT> இதற்கு முன் எப்போதும் ஒரு <DT>value</DT> ஆகும்.
544
+
545
+ 137
546
+ 00:11:37,440 --> 00:11:40,396
547
+ <DNT>yellow</DNT> minus 1 இன் <DT>value</DT> ஐ எடுத்து, <DT>left value</DT> உடன் <DT>exchange</DT> செய்வோம்.
548
+
549
+ 138
550
+ 00:11:41,414 --> 00:11:48,765
551
+ இப்போது நாம் செய்ய வேண்டியது என்னவென்றால், நம்மிடம் இப்போது <DNT> p, p and greater than p</DNT> ஐ விட குறைவாக உள்ளது.
552
+
553
+ 139
554
+ 00:11:49,627 --> 00:12:01,350
555
+ இங்குதான் <DNT>yellow</DNT> <DNT>சரியானது</DNT>. நாம் 0 இலிருந்து <DNT>yellow</DNT> minus 1 க்கு செல்ல வேண்டும். மீண்டும் <DNT>sort p </DNT> ஐ விரும்பவில்லை. ஏனெனில் <DNT>p</DNT> ஏற்கனவே சரியான இடத்தில் வைக்கப்பட்டுள்ளது.
556
+
557
+ 140
558
+ 00:12:01,350 --> 00:12:06,391
559
+ <DNT>L</DNT> இலிருந்து <DNT>yellow</DNT> minus 1 ஆகவும், <DNT>yellow</DNT> இலிருந்து <DNT>right</DNT> முனையிலும் <DT>quick sort</DT> செய்வோம்.
560
+
561
+ 141
562
+ 00:12:13,070 --> 00:12:17,070
563
+ <DT>slide</DT> ல் பார்த்த <DT>python code</DT> ஐ இங்கே ஒரு <DT>file</DT> ல் எழுதியுள்ளோம்.
564
+
565
+ 142
566
+ 00:12:17,070 --> 00:12:20,320
567
+ slide ல் இருந்த அதே <DT>code</DT> இதுதானா என்பதை சரிபார்க்கலாம்.
568
+
569
+ 143
570
+ 00:12:20,345 --> 00:12:28,786
571
+ நாம் அதை முயற்சி செய்து <DT>run</DT> செய்யலாம் மற்றும் அது செயல்படுகிறதா என்று சரிபார்க்கலாம். <DT>call python</DT>, இந்த <DT>function</DT> ஐ <DT>import</DT> செய்கிறோம்.
572
+
573
+ 144
574
+ 00:12:32,849 --> 00:12:37,699
575
+ இது மீண்டும் ஒரு வகையான <DT>sorts</DT> <DT>function</DT> என்பதை நினைவில் கொள்ளுங்கள். எதையாவது <DT>sort</DT> செய்து அதன் விளைவைப் பார்க்க விரும்பினால்.
576
+
577
+ 145
578
+ 00:12:37,753 --> 00:12:40,870
579
+ நாம் அதற்கு ஒரு <DT>name</DT> ஐ <DT>assign</DT> செய்ய வேண்டும். பின்னர் அந்த <DT>name</DT> ஐ <DT>sort</DT> செய்து, பிறகு <DT>name</DT> ஐ சரிபார்க்க வேண்டும்.
580
+
581
+ 146
582
+ 00:12:40,909 --> 00:12:48,137
583
+ எடுத்துக்காட்டாக, 500 முதல் 0 வரையிலான <DT>range</DT> of <DT>values</DT> ஐ எடுத்துக் கொள்வோம்.
584
+
585
+ 147
586
+ 00:12:50,287 --> 00:12:58,090
587
+ இப்போது நாம் <DNT>quicksort l</DNT> என்று சொன்னால், அதற்கு <DNT>of course</DNT> முடிவைக் கொடுக்க வேண்டும்.
588
+
589
+ 148
590
+ 00:13:01,020 --> 00:13:02,468
591
+ பிறகு <DNT>l</DNT> சரியாக <DT>sorted</DT> செய்யப்படும்.
592
+
593
+ 149
594
+ 00:13:04,311 --> 00:13:09,523
595
+ நீங்கள் அனைத்தையும் பார்க்க முடியாது. ஆனால் 83 84 முதல் நூறு வரை மற்றும் இரண்டு 500 வரை பார்க்க முடியும்.
596
+
597
+ 150
598
+ 00:13:10,995 --> 00:13:16,480
599
+ இப்போது, 1000 என்று சொன்னால், <DT>insertion sort</DT> ல் நமக்கு இருந்த அதே <DT>problem</DT> உள்ளது.
600
+
601
+ 151
602
+ 00:13:17,897 --> 00:13:22,596
603
+ பின்னர் நாம் இதை <DT>quicksort</DT> செய்ய முயற்சிக்கிறோம். நீங்கள் இதை <DT>recursion depth</DT> ஆல் பெறுவீர்கள்.
604
+
605
+ 152
606
+ 00:13:22,621 --> 00:13:29,644
607
+ <DT>worst case</DT> ல் நாம் பார்ப்பது போல, <DT>quick sort</DT> ஆனது <DT>insertion sort</DT> ஐ போலவே செயல்படுகிறது மற்றும் இது மோசமான case.
608
+
609
+ 153
610
+ 00:13:29,669 --> 00:13:33,759
611
+ இதைப் போக்க, நாம் வழக்கமான காரியத்தைச் செய்ய வேண்டும். <DT>SYS module</DT> ஐ <DT>import</DT> செய்ய வேண்டும்.
612
+
613
+ 154
614
+ 00:13:33,759 --> 00:13:35,409
615
+ <DT>recursion limit</DT> ஐ <DT>set</DT> செய்யவும்.
616
+
617
+ 155
618
+ 00:13:36,658 --> 00:13:43,652
619
+ எனவே, பொருத்தமான பெரிய ஒன்று பத்தாயிரம் அல்லது நூறாயிரம் என்று சொல்லுங்கள். பின்னர் அதை <DT>quicksort</DT> செய்ய சொன்னால் எந்த problem உம் இல்லை.
620
+
621
+ 156
622
+ 00:13:44,779 --> 00:13:49,299
623
+ <DT>python</DT> ல் இந்த <DT>recursion limit</DT> ஐ manually set செய்ய வேண்டிய மற்றொரு case இதுவாகும்.
624
+
625
+ 157
626
+ 00:13:49,647 --> 00:13:56,929
627
+ உண்மையில் நாம் பார்க்கக்கூடிய ஒரு விஷயம் என்னவென்றால், <DT>quicksort</DT> என்பது நாம் நம்புவது போல் நல்லதல்ல, ஏனெனில்.
628
+
629
+ 158
630
+ 00:13:57,008 --> 00:14:02,080
631
+ எடுத்துக்காட்டாக, 7500 என்று ஏதாவது <DT>size</DT> ஐ <DT>instance sort</DT> செய்யவும்.
632
+
633
+ 159
634
+ 00:14:05,504 --> 00:14:09,554
635
+ பின்னர் அது ஒரு புலப்படும் நேரம் எடுக்கும். எனவே, <DNT>n log n</DNT> என்று <DT>merge sort </DT> ஐ பார்த்தோம்.
636
+
637
+ 160
638
+ 00:14:09,790 --> 00:14:13,700
639
+ 5,000 மற்றும் 10000 மற்றும் 100,000 கூட <DT>instantaneously</DT> செய்யும்.
640
+
641
+ 161
642
+ 00:14:13,832 --> 00:14:18,129
643
+ தெளிவாக <DT>quick sort</DT> மற்றும் <DT>merge sort </DT> செயல்படாது.
644
+
645
+ 162
646
+ 00:14:18,165 --> 00:14:22,480
647
+ மற்றும் உண்மையில் <DT>quick sort</DT> க்கு <DT>order</DT> <DNT>n log n</DNT> <DT>merge sort </DT> இல்லை என்பதை நாம் பார்ப்போம்.
648
+
649
+ 163
650
+ 00:14:22,511 --> 00:14:25,090
651
+ நாம் விரும்பியபடி நடத்தை.
652
+
653
+ 164
654
+ 00:14:25,090 --> 00:14:28,539
655
+ அதற்குக் காரணம், நாம் <DT>median</DT> ஐ பயன்படுத்தாமல், split செய்வதற்கான முதல் <DT>value</DT> ஐ பயன்படுத்துகிறோம்.
656
+
657
+ 165
658
+ 00:14:28,539 --> 00:14:33,909
659
+ அதை அடுத்த lecture ல் பார்ப்போம். ஏன் <DT>quick sort</DT> ல் உண்மையி���் ஒரு worst case <DNT>order n log n algorithm</DNT> அல்ல.
660
+