در این مطلب، ویدئو مقدمه ای بر مرتب سازی در پایتون با sorted، list.sort و پیاده سازی مرتب سازی درج با زیرنویس فارسی را برای دانلود قرار داده ام. شما میتوانید با پرداخت 15 هزار تومان ، این ویدیو به علاوه تمامی فیلم های سایت را دانلود کنید.اکثر فیلم های سایت به زبان انگلیسی می باشند. این ویدئو دارای زیرنویس فارسی ترجمه شده توسط هوش مصنوعی می باشد که میتوانید نمونه ای از آن را در قسمت پایانی این مطلب مشاهده کنید.
مدت زمان فیلم: 00:33:28
تصاویر این ویدئو:
قسمتی از زیرنویس این فیلم:
00:00:00,399 –> 00:00:02,159
وقتی با برنامههایی کار میکنید که
2
00:00:02,159 –> 00:00:04,319
شامل دادهها میشوند، اغلب میخواهید
3
00:00:04,319 –> 00:00:04,880
دادههای خود را به
4
00:00:04,880 –> 00:00:08,320
گونهای سازماندهی کنید که آیتمهای شما
5
00:00:08,320 –> 00:00:09,040
6
00:00:09,040 –> 00:00:11,519
بهعنوان مثال زمانی که
7
00:00:11,519 –> 00:00:13,200
در حال تعامل با یک وبسایت تجارت الکترونیک
8
00:00:13,200 –> 00:00:13,920
9
00:00:13,920 –> 00:00:15,599
هستید و نتایج جستجو دارید و
10
00:00:15,599 –> 00:00:17,440
مرتبسازی بر اساس قیمتی که معمولاً از
11
00:00:17,440 –> 00:00:19,039
کمترین تا بالاترین میخواهید
12
00:00:19,039 –> 00:00:22,160
یا بر اساس رتبهبندی کاربران از محصولات دارای رتبه برتر
13
00:00:22,160 –> 00:00:25,119
تا محصولات با بدترین رتبه، ما
14
00:00:25,119 –> 00:00:27,359
اطلاعات را مرتب میکنیم
15
00:00:27,359 –> 00:00:29,199
تا چیزهایی را که به دنبال آن هستیم
16
00:00:29,199 –> 00:00:31,439
آسانتر پیدا کنیم، برنامههای زیادی از
17
00:00:31,439 –> 00:00:33,040
مرتبسازی و رایانه وجود دارد
18
00:00:33,040 –> 00:00:34,719
برنامهها یکی از قدیمیترین
19
00:00:34,719 –> 00:00:36,480
الگوریتمها در
20
00:00:36,480 –> 00:00:38,719
رشته ما هستند، بنابراین آنچه
21
00:00:38,719 –> 00:00:40,079
در این ویدیو
22
00:00:40,079 –> 00:00:42,000
به آن نگاه میکنیم، برخی از توابع داخلی
23
00:00:42,000 –> 00:00:43,600
پایتون است که به ما اجازه میدهد
24
00:00:43,600 –> 00:00:46,320
لیستهای گفته شده دادهها را مرتب کنیم و سپس یک
25
00:00:46,320 –> 00:00:47,520
نگاهی کوتاه به
26
00:00:47,520 –> 00:00:49,520
یکی از انواع سادهتر الگوریتمهای مرتبسازی،
27
00:00:49,520 –> 00:00:52,239
یک الگوریتم مرتبسازی درج
28
00:00:52,239 –> 00:00:54,079
، بیایید مستقیماً به یک مثال پایتون
29
00:00:54,079 –> 00:00:56,480
30
00:00:57,120 –> 00:00:59,920
در این مثال بپردازیم، چیزی که میبینیم
31
00:00:59,920 –> 00:01:01,199
متغیری به نام امتیاز
32
00:01:01,199 –> 00:01:03,120
است که فهرستی از i است. به nteger ها
33
00:01:03,120 –> 00:01:05,199
یک لیست اختصاص داده می شود
34
00:01:05,199 –> 00:01:07,760
که دارای تعدادی اعداد صحیح است و
35
00:01:07,760 –> 00:01:09,119
توجه کنید که آنها مرتب نشده اند
36
00:01:09,119 –> 00:01:12,000
95 96 به ترتیب افزایش می یابند اما
37
00:01:12,000 –> 00:01:13,600
به محض اینکه به 80 رسیدیم می بینیم که
38
00:01:13,600 –> 00:01:15,360
در جای خود قرار ندارد
39
00:01:15,360 –> 00:01:17,280
و پایتون یک عملکرد داخلی دارد.
40
00:01:17,280 –> 00:01:18,400
با نام مرتب شده است
41
00:01:18,400 –> 00:01:20,240
که بدون نیاز به
42
00:01:20,240 –> 00:01:22,240
وارد کردن آن در دسترس است زیرا داخلی است
43
00:01:22,240 –> 00:01:25,840
و کاری که مرتب شده انجام می دهد این است که به آن
44
00:01:25,840 –> 00:01:27,520
آرگومان می دهید که ارجاع به
45
00:01:27,520 –> 00:01:30,560
لیستی است و آنچه را به شما برمی گرداند
46
00:01:30,560 –> 00:01:32,000
و آنچه را به شما برمی گرداند و چه چیزی را به شما
47
00:01:32,000 –> 00:01:33,920
می دهد. تخصیص به عنوان
48
00:01:33,920 –> 00:01:35,439
بخشی از این بیانیه انتساب بازگشت
49
00:01:35,439 –> 00:01:36,960
به نمرات مرتب
50
00:01:36,960 –> 00:01:40,560
شده یک لیست جدید است که در آن مقادیر
51
00:01:40,560 –> 00:01:42,079
لیست ورودی اصلی به
52
00:01:42,079 –> 00:01:45,759
ترتیب مرتب شده اند و این
53
00:01:45,759 –> 00:01:48,960
به طور پیش فرض به ترتیب صعودی یا حداقل به بزرگترین ترتیب است،
54
00:01:48,960 –> 00:01:51,600
بنابراین وقتی نمرات مرتب شده را چاپ می کنیم چه اتفاقی می افتد
55
00:01:51,600 –> 00:01:53,520
. خواهید دید که نمرات مرتب
56
00:01:53,520 –> 00:01:54,240
شده اکنون
57
00:01:54,240 –> 00:01:57,680
یک کپی از لیست اصلی ما است، به طوری که
58
00:01:57,680 –> 00:01:59,439
هر یک از موارد مرتب شده اند
59
00:01:59,439 –> 00:02:02,000
و امتیازات بدون تغییر باقی می مانند، به
60
00:02:02,000 –> 00:02:03,840
این معنی که حتی اگر به این تابع مرتب شده
61
00:02:03,840 –> 00:02:06,240
اشاره ای به امتیازات داده ایم
62
00:02:06,240 –> 00:02:08,639
که یک نوع داده تغییرپذیر r است.
63
00:02:08,639 –> 00:02:09,758
لیست ight یک نوع داده قابل تغییر است که
64
00:02:09,758 –> 00:02:12,800
مرتبسازی شده میتوانست آیتمهای موجود در فهرست اصلی را سازماندهی مجدد کند،
65
00:02:12,800 –> 00:02:15,120
66
00:02:15,120 –> 00:02:16,959
اما این تابعی است که انتخاب میکند
67
00:02:16,959 –> 00:02:18,720
لیست ورودی خود را تغییر ندهد
68
00:02:18,720 –> 00:02:20,560
و از بسیاری جهات
69
00:02:20,560 –> 00:02:22,640
استدلال در مورد آن را آسانتر از عملکردی است
70
00:02:22,640 –> 00:02:24,720
که خواهیم دید. در یک لحظه پس
71
00:02:24,720 –> 00:02:26,560
بیایید نگاهی به
72
00:02:26,560 –> 00:02:28,000
نتایج بیندازیم و خودمان را متقاعد کنیم که
73
00:02:28,000 –> 00:02:29,920
اگر قرار بود این برنامه
74
00:02:29,920 –> 00:02:33,920
python m lessons ls15
75
00:02:33,920 –> 00:02:37,680
مرتب سازی صفر صفر را اجرا
76
00:02:37,680 –> 00:02:40,480
کنیم، می بینیم که نمرات مرتب شده ما 60 78
77
00:02:40,480 –> 00:02:42,319
80 95 96 99 است،
78
00:02:42,319 –> 00:02:44,560
بنابراین آنها به درستی در یک بازآرایی شده اند.
79
00:02:44,560 –> 00:02:45,519
ترتیب مرتب شده
80
00:02:45,519 –> 00:02:47,280
در حالی که ورودی اصلی یا
81
00:02:47,280 –> 00:02:48,959
لیست امتیازات اصلی
82
00:02:48,959 –> 00:02:52,160
که ورودی ما به این تابع مرتب شده
83
00:02:52,160 –> 00:02:55,280
بدون تغییر باقی مانده است، اکنون جهش پیدا نکرده است، در
84
00:02:55,280 –> 00:02:56,560
85
00:02:56,560 –> 00:02:59,920
حال حاضر مواردی وجود دارد که می
86
00:02:59,920 –> 00:03:00,959
87
00:03:00,959 –> 00:03:03,440
خواهید یک لیست را بدون ایجاد لیست دوم مرتب
88
00:03:03,440 –> 00:03:06,720
کنید و مجبور به پیگیری آن باشید.
89
00:03:06,720 –> 00:03:09,360
خوب شی لیست و نوع داده لیست
90
00:03:09,360 –> 00:03:09,840
91
00:03:09,840 –> 00:03:13,280
در پایتون دارای یک روش مرتب سازی داخلی است
92
00:03:13,280 –> 00:03:15,120
که به شما امکان می دهد این کار را انجام دهید که
93
00:03:15,120 –> 00:03:17,280
لیست اصلی را تغییر می دهد،
94
00:03:17,280 –> 00:03:20,720
بنابراین بیایید نمونه ای از آن را
95
00:03:20,720 –> 00:03:24,000
در کد s خود ایجاد کنیم. o scores.sort
96
00:03:24,000 –> 00:03:25,120
اکنون یکی از اولین چیزهایی که متوجه خواهید
97
00:03:25,120 –> 00:03:27,040
شد
98
00:03:27,040 –> 00:03:29,519
این است که فراخوانی متد است، بنابراین شی لیست
99
00:03:29,519 –> 00:03:30,640
100
00:03:30,640 –> 00:03:32,720
و نوع داده لیست دارای یک
101
00:03:32,720 –> 00:03:34,159
متد داخلی به نام sort هستند
102
00:03:34,159 –> 00:03:37,440
و یک void یا
103
00:03:37,440 –> 00:03:39,519
تابعی است که هیچ یک را بر نمی گرداند. متدی که
104
00:03:39,519 –> 00:03:40,560
هیچکدام را برمی گرداند،
105
00:03:40,560 –> 00:03:42,480
ما به اینها فکر می کنیم زمانی
106
00:03:42,480 –> 00:03:44,159
که توابع ساده قدیمی هستند، مانند رویه هایی هستند،
107
00:03:44,159 –> 00:03:47,040
اما چون این یک روش است، می دانید که
108
00:03:47,040 –> 00:03:48,319
ما فقط می گوییم که این روشی است که
109
00:03:48,319 –> 00:03:49,680
هیچ کدام را برمی گرداند، هیچ مقدار نتیجه ای ندارد.
110
00:03:49,680 –> 00:03:50,720
111
00:03:50,720 –> 00:03:53,920
مرتب سازی بر روی
112
00:03:53,920 –> 00:03:56,720
یک لیست، با
113
00:03:56,720 –> 00:03:58,959
مرتب کردن مجدد یا مرتب کردن مجدد
114
00:03:58,959 –> 00:04:00,480
موارد موجود در آن، آن لیست را تغییر می دهد، به طوری که آنها اکنون
115
00:04:00,480 –> 00:04:02,319
به ترتیب مرتب شده اند و ما می توانیم
116
00:04:02,319 –> 00:04:03,920
خود را با چاپ نمرات در این مورد متقاعد کنیم
117
00:04:03,920 –> 00:04:07,040
118
00:04:07,920 –> 00:04:10,560
و بنابراین وقتی
119
00:04:10,560 –> 00:04:12,319
آن را در خط هشت چاپ کردیم متوجه نمرات آن شویم.
120
00:04:12,319 –> 00:04:14,080
اینجا مرتب نشده بود، اما وقتی
121
00:04:14,080 –> 00:04:15,920
همان
122
00:04:15,920 –> 00:04:19,040
لیست را پس از فراخوانی روش مرتب سازی روی
123
00:04:19,040 –> 00:04:21,440
آن چاپ کردیم، جهش یافته بود، موارد آن به
124
00:04:21,440 –> 00:04:23,360
صورت داخلی بازآرایی شدند
125
00:04:23,360 –> 00:04:26,720
و ما یک لیست مرتب شده داریم، بنابراین این یکی
126
00:04:26,720 –> 00:04:28,000
از تفاوت های بین
127
00:04:28,000 –> 00:04:31,840
الگوریتمی است که ورودی آن را بررسی می کند. به همان اندازه که
128
00:04:31,840 –> 00:04:33,360
غیرقابل لمس است، آنها را تغییر
129
00:04:33,360 –> 00:04:34,960
نمی دهد، این همان کاری است که تابع مرتب شده
130
00:04:34,960 –> 00:04:37,680
انجام می دهد و این بدان معناست که
131
00:04:37,680 –> 00:04:39,120
ما باید یک متغیر جدید
132
00:04:39,120 –> 00:04:41,759
را تنظیم کنیم تا با مقادیر به دست آمده آن کار
133
00:04:41,759 –> 00:04:42,560
کنیم
134
00:04:42,560 –> 00:04:44,560
و اگر می دانید که هستید، ممکن است بخواهید این کار را انجام دهید.
135
00:04:44,560 –> 00:04:46,160
مطمئن باشید که
136
00:04:46,160 –> 00:04:48,160
ترتیب اصلی را پیگیری کرده اید،
137
00:04:48,160 –> 00:04:49,600
138
00:04:49,600 –> 00:04:51,840
برای مثال شاید شما سابقه
139
00:04:51,840 –> 00:04:53,199
همه کسانی که بازی شما را انجام داده اند و
140
00:04:53,199 –> 00:04:54,639
امتیازات آنها را داشته باشید و می خواهید آن
141
00:04:54,639 –> 00:04:56,000
تاریخچه و ترتیبی که افراد
142
00:04:56,000 –> 00:04:58,479
آنها را بازی کرده اند حفظ کنید، اما همچنین دوست دارید
143
00:04:58,479 –> 00:04:59,759
بتوانید فهرستی از امتیازات برتر خود داشته
144
00:04:59,759 –> 00:05:00,479
145
00:05:00,479 –> 00:05:02,240
باشید، احتمالاً می خواهید یک
146
00:05:02,240 –> 00:05:03,840
لیست جداگانه برای آن
147
00:05:03,840 –> 00:05:07,280
داشته باشید که مرتب شده است، در حالی که گاهی اوقات
148
00:05:07,280 –> 00:05:09,199
فقط می خواهید موارد
149
00:05:09,199 –> 00:05:10,000
لیستی را که دارید
150
00:05:10,000 –> 00:05:11,680
بدون نگرانی در مورد ایجاد
151
00:05:11,680 –> 00:05:13,440
نسخه دیگری از آن لیست، دوباره مرتب کنید.
152
00:05:13,440 –> 00:05:15,039
استفاده از روش مرتبسازی
153
00:05:15,039 –> 00:05:17,360
کار میکند،
154
00:05:18,479 –> 00:05:21,199
بنابراین چگونه ممکن است یک الگوریتم در
155
00:05:21,199 –> 00:05:22,240
پشت صحنه
156
00:05:22,240 –> 00:05:25,280
157
00:05:25,280 –> 00:05:29,199
کار کند.
158
00:05:29,199 –> 00:05:32,960
159
00:05:32,960 –> 00:05:36,720
مفهوم ptual و سپس نگاهی خواهیم انداخت
160
00:05:36,720 –> 00:05:39,520
به اینکه چگونه میتوانیم
161
00:05:39,520 –> 00:05:41,199
این را در کد واقعی پیادهسازی کنیم،
162
00:05:41,199 –> 00:05:44,720
بنابراین بیایید در مورد مرتبسازی درج صحبت کنیم.
163
00:05:44,720 –> 00:05:47,039
اوه،
164
00:05:48,960 –> 00:05:51,680
مرتبسازی درج یکی از قدیمیترین
165
00:05:51,680 –> 00:05:53,520
الگوریتمهای مرتبسازی است که
166
00:05:53,520 –> 00:05:55,440
در کلاس ما صحبت کردن در مورد آن خوب است،
167
00:05:55,440 –> 00:05:57,440
زیرا نسبتاً ساده است.
168
00:05:57,440 –> 00:05:59,759
به برخی از الگوریتمهای پیشرفتهتر
169
00:05:59,759 –> 00:06:01,440
برای مرتبسازی
170
00:06:01,440 –> 00:06:02,319
که از
171
00:06:02,319 –> 00:06:04,240
بسیاری جهات دارای ویژگیهای متفاوتی هستند، پیشرفتهای ما
172
00:06:04,240 –> 00:06:04,960
173
00:06:04,960 –> 00:06:07,919
در این الگوریتم، اما درک آن سختتر است
174
00:06:07,919 –> 00:06:08,560
175
00:06:08,560 –> 00:06:10,479
و در کلاسهای علوم کامپیوتر بخش بالایی بیشتر در مورد آنها خواهید
176
00:06:10,479 –> 00:06:12,880
آموخت،
177
00:06:12,880 –> 00:06:15,360
بنابراین بیایید فهرستی بسیار ساده از اعداد را تصور
178
00:06:15,360 –> 00:06:16,000
179
00:06:16,000 –> 00:06:19,520
کنیم. بگویید 2 3
180
00:06:19,520 –> 00:06:22,880
یک چهار، بنابراین ما یک لیست با
181
00:06:22,880 –> 00:06:25,600
چهار مقدار در آن داریم و بلافاصله به
182
00:06:25,600 –> 00:06:28,080
عنوان انسان می توانید ببینید
183
00:06:28,080 –> 00:06:30,880
کدام یک از این موارد در جای خود نیستند و
184
00:06:30,880 –> 00:06:32,479
برای رفع آن چه کاری انجام می دهید
185
00:06:32,479 –> 00:06:34,000
که یکی را به آن منتقل کنید.
186
00:06:34,000 –> 00:06:37,039
زمانی
187
00:06:37,039 –> 00:06:38,479
که با یک برنامه کامپیوتری
188
00:06:38,479 –> 00:06:40,720
در الگوریتمها کار میکنیم، در قسمت جلوی فهرست شما،
189
00:06:40,720 –> 00:06:42,400
باید در مورد روش پردازش خود بسیار دقیق
190
00:06:42,400 –> 00:06:44,639
و عمدی عمل کنیم.
191
00:06:44,639 –> 00:06:46,240
ليستي
192
00:06:46,240 –> 00:06:49,280
كه كامپيوتر نمي تواند فقط يك نوع استنباط كند
193
00:06:49,280 –> 00:06:51,919
و به همه اين موارد نگاه كند، مثل ما مي توانيم
194
00:06:51,919 –> 00:06:53,199
و
195
00:06:53,199 –> 00:06:54,800
خوب بدانيم كه يكي در جاي خود نيست،
196
00:06:54,800 –> 00:06:56,240
بنابراين به
197
00:06:56,240 –> 00:06:59,039
198
00:06:59,039 –> 00:06:59,759
199
00:06:59,759 –> 00:07:01,599
مجموعه اي از مراحل خيلي عمدي نياز داريم، پس بياييد به يك
200
00:07:01,599 –> 00:07:03,759
راه فكر كنيم كه ما ممکن است این کار
201
00:07:03,759 –> 00:07:05,520
و شهود را در اینجا انجام دهیم قبل از اینکه
202
00:07:05,520 –> 00:07:06,960
به جزئیات بیشتر وارد شویم و
203
00:07:06,960 –> 00:07:08,160
سپس به کد واقعی
204
00:07:08,160 –> 00:07:10,960
برای پیاده سازی آن نگاه
205
00:07:10,960 –> 00:07:11,759
206
00:07:11,759 –> 00:07:13,280
207
00:07:13,280 –> 00:07:14,800
208
00:07:14,800 –> 00:07:18,319
کنیم. یکی دیگر،
209
00:07:18,479 –> 00:07:21,280
بیایید تصور کنیم که میتوانیم یک و سه را به گونهای عوض
210
00:07:21,280 –> 00:07:22,160
211
00:07:22,160 –> 00:07:25,360
کنیم که لیست حاصله ما دو یک
212
00:07:25,360 –> 00:07:28,720
سه چهار باشد و سپس میتوانیم
213
00:07:28,720 –> 00:07:32,400
یکی را با دو تعویض کنیم که به ما یک دو
214
00:07:32,400 –> 00:07:36,560
سه چهار میدهد.
215
00:07:36,560 –> 00:07:38,319
216
00:07:38,319 –> 00:07:40,240
ممکن است تعجب کنید که
217
00:07:40,240 –> 00:07:42,160
چرا نمیدانید، ما به
218
00:07:42,160 –> 00:07:43,599
219
00:07:43,599 –> 00:07:46,000
نوعی میدانیم که میدانید
220
00:07:46,000 –> 00:07:48,080
واقعاً نمیتوانید یک و دو را مستقیماً عوض
221
00:07:48,080 –> 00:07:49,759
کنید، اما تصور کنید که چرا نمیتوانید
222
00:07:49,759 –> 00:07:50,319
یکی را
223
00:07:50,319 –> 00:07:53,120
زودتر به دلایلی که میخواهیم وارد کنید. ببینیم
224
00:07:53,120 –> 00:07:55,120
باید بتوانیم فکر کنیم مورد به مورد
225
00:07:55,120 –> 00:07:57,759
در لیست ما قرار دارد و این را بر اساس
226
00:07:57,759 –> 00:07:59,759
یک مبنای بسیار ساده
227
00:07:59,759 –> 00:08:02,800
مبادله دو مقدار تجزیه کنید، بنابراین ما
228
00:08:02,800 –> 00:08:04,560
این یکی را به عقب برمی گردانیم، بنابراین توجه داشته باشید که به
229
00:08:04,560 –> 00:08:05,360
نوعی
230
00:08:05,360 –> 00:08:07,440
به سمت موقعیتی که باید در آن باشد حرکت می کند،
231
00:08:07,440 –> 00:08:09,280
232
00:08:09,280 –> 00:08:11,120
بنابراین بیایید سعی کنیم و در مورد برخی از آنها فکر کنیم.
233
00:08:11,120 –> 00:08:12,879
اجزای آنچه این الگوریتم ممکن است
234
00:08:12,879 –> 00:08:14,479
نیاز به پیگیری داشته باشد
235
00:08:14,479 –> 00:08:16,160
یا برخی از حالت هایی که ممکن است لازم
236
00:08:16,160 –> 00:08:18,960
باشد از آن آگاه باشد
237
00:08:19,599 –> 00:08:22,720
اولین چیزی که می خواهیم در نظر بگیریم این است
238
00:08:22,720 –> 00:08:25,440
که بیایید نوعی فلش سبز به سمت پایین را تصور کنیم
239
00:08:25,440 –> 00:08:26,560
یا این
240
00:08:26,560 –> 00:08:29,840
هویج سبز می گوید هی
241
00:08:29,840 –> 00:08:31,680
همه چیز را نادیده بگیرید بعد از این هویج می آید،
242
00:08:31,680 –> 00:08:33,679
بنابراین نگران این اعداد نباشید،
243
00:08:33,679 –> 00:08:35,279
244
00:08:35,279 –> 00:08:38,799
بیایید سعی کنیم و
245
00:08:38,799 –> 00:08:40,399
با دامنه کوچکتر به این مشکل فکر کنیم، بیایید سعی کنیم و
246
00:08:40,399 –> 00:08:43,200
بفهمیم همه چیزهایی که قبل از آن آمده است
247
00:08:43,200 –> 00:08:46,080
و از جمله این هویج سبز
248
00:08:46,080 –> 00:08:47,519
قبلاً
249
00:08:47,519 –> 00:08:49,360
یکی از چیزهایی است که می توانیم به درستی تشخیص دهیم.
250
00:08:49,360 –> 00:08:51,600
خفاش زمانی است که شما فقط
251
00:08:51,600 –> 00:08:53,040
یک مورد را در لیست خود دارید و
252
00:08:53,040 –> 00:08:54,800
فقط یک مورد
253
00:08:54,800 –> 00:08:56,480
را در نظر می گیرید که مرتب شده است، چیزی برای مرتب کردن مجدد
254
00:08:56,480 –> 00:08:58,560
وجود ندارد، نمی توان لیست یک مورد
255
00:08:58,560 –> 00:09:00,880
را نمی توان به درستی با تعریف مرتب کرد.
256
00:09:00,880 –> 00:09:02,399
257
00:09:02,399 –> 00:09:03,760
بنابراین این سوال کمی
258
00:09:03,760 –> 00:09:05,920
جالبتر میشود و فرض میکنیم که
259
00:09:05,920 –> 00:09:07,680
میدانید اگر یک لیست آیتم داشته
260
00:09:07,680 –> 00:09:09,519
باشیم، لیست ما مرتب شده است، اما
261
00:09:09,519 –> 00:09:11,360
بیایید مشکل خود را با نگاه کردن به
262
00:09:11,360 –> 00:09:12,880
دومین مورد از لیست خود
263
00:09:12,880 –> 00:09:15,040
که نمایه یک است شروع کنیم، زیرا این موارد
264
00:09:15,040 –> 00:09:16,399
به یاد داشته باشید که شاخص
265
00:09:16,399 –> 00:09:19,440
ها صفر یک و دو و سه هستند
266
00:09:19,440 –> 00:09:20,720
و ما برمی گردیم و فقط در یک لحظه
267
00:09:20,720 –> 00:09:22,640
در مورد شاخص ها و پیامدهای
268
00:09:22,640 –> 00:09:24,160
کار با یک الگوریتم و
269
00:09:24,160 –> 00:09:25,519
شاخص های
270
00:09:25,519 –> 00:09:27,360
271
00:09:27,360 –> 00:09:28,800
آن بیشتر فکر خواهیم کرد. تلاش برای پرسیدن
272
00:09:28,800 –> 00:09:31,920
خوب از این نقطه برگردیم
273
00:09:31,920 –> 00:09:36,720
از سه و دو لیست ما مرتب شده
274
00:09:36,720 –> 00:09:39,440
است، لیست ما مرتب شده است یک نوع سوال
275
00:09:39,440 –> 00:09:40,000
دشوار
276
00:09:40,000 –> 00:09:42,959
برای پاسخ دادن به آن هنوز یک
277
00:09:42,959 –> 00:09:45,040
سوال سطح بالایی است
278
00:09:45,040 –> 00:09:47,920
اما اگر ما را بدیهی بدانیم یا
279
00:09:47,920 –> 00:09:49,519
در واقع اگر ما ما این را
280
00:09:49,519 –> 00:09:50,560
به عنوان حقیقت می
281
00:09:50,560 –> 00:09:52,640
دانیم که همه چیز تا زمانی که به
282
00:09:52,640 –> 00:09:54,720
نقطه نگاه کردن به این مورد بعدی
283
00:09:54,720 –> 00:09:56,480
رسیدیم، می دانیم که آنچه قبل از آن بود
284
00:09:56,480 –> 00:09:58,560
مرتب شده بود، بنابراین اکنون سؤال واقعاً
285
00:09:58,560 –> 00:09:58,959
فقط
286
00:09:58,959 –> 00:10:00,800
مورد فعلی است که ما به آن نگاه می
287
00:10:00,800 –> 00:10:01,839
کنیم و به یاد می آوریم. w
288
00:10:01,839 –> 00:10:03,279
همه چیز را نادیده می گیریم بعد از اینکه این هویج
289
00:10:03,279 –> 00:10:05,279
مورد فعلی در موقعیت صحیح
290
00:10:05,279 –> 00:10:06,399
قرار دارد
291
00:10:06,399 –> 00:10:09,760
چگونه می توانیم بدانیم که
292
00:10:09,760 –> 00:10:11,680
چیز دیگری خواهیم داشت که در حال
293
00:10:11,680 –> 00:10:13,839
پیگیری آن هستیم که اشکالی ندارد این موردی است
294
00:10:13,839 –> 00:10:14,720
که می خواهیم
295
00:10:14,720 –> 00:10:17,839
قرار دهیم درست است، بنابراین موردی که
296
00:10:17,839 –> 00:10:20,000
میخواهیم قرار دهیم مقدار شاخص یک است،
297
00:10:20,000 –> 00:10:21,680
بنابراین وقتی هویج را به جلو میبریم
298
00:10:21,680 –> 00:10:22,959
همیشه میگوییم این موردی است
299
00:10:22,959 –> 00:10:24,160
که میخواهیم مطمئن شویم در
300
00:10:24,160 –> 00:10:25,279
جای درستی است
301
00:10:25,279 –> 00:10:26,480
و چه میخواهیم برای اینکه خوب کار کنیم،
302
00:10:26,480 –> 00:10:28,320
آن را با آیتمی
303
00:10:28,320 –> 00:10:29,600
که قبل از آن
304
00:10:29,600 –> 00:10:30,959
درست میآید مقایسه میکنیم، بنابراین من میخواهم آن را با
305
00:10:30,959 –> 00:10:33,600
رنگ صورتی دور بزنم و
306
00:10:33,600 –> 00:10:36,800
3 میتواند بعد از 2 میآید، بله درست است،
307
00:10:36,800 –> 00:10:39,200
بنابراین ما این مرحله را کامل کردیم، میدانیم
308
00:10:39,200 –> 00:10:39,839
که خوب
309
00:10:39,839 –> 00:10:41,680
است تا زمانی که هویج سبز اینجا
310
00:10:41,680 –> 00:10:43,120
همه چیز مرتب شود و
311
00:10:43,120 –> 00:10:45,200
همه چیز خوب است، بنابراین من می خواهم تکرار دیگری را
312
00:10:45,200 –> 00:10:46,240
در اینجا ترسیم کنم
313
00:10:46,240 –> 00:10:49,279
2 3 1 4
314
00:10:49,279 –> 00:10:53,279
و این چرخه را درست جلو ببرم
315
00:10:53,279 –> 00:10:54,959
و بنابراین اکنون همان سوال را می پرسیم که
316
00:10:54,959 –> 00:10:56,880
می دانیم همه چیز قبل از
317
00:10:56,880 –> 00:10:57,440
این
318
00:10:57,440 –> 00:10:59,040
به روشی که ما می خواهیم آن را
319
00:10:59,040 –> 00:11:01,040
بر اساس آنچه تاکنون گفته
320
00:11:01,040 –> 00:11:04,240
ایم طبقه بندی شده است estion چیزی است که در مورد این آیتم
321
00:11:04,240 –> 00:11:05,839
وجود دارد، اکنون موردی است که ما سعی
322
00:11:05,839 –> 00:11:07,680
می کنیم مطمئن شویم در جای درستی قرار دارد،
323
00:11:07,680 –> 00:11:09,279
بنابراین چه کاری را خوب انجام می دهیم، آن
324
00:11:09,279 –> 00:11:11,760
را با موردی که قبل از آن قرار می گیرد مقایسه می کنیم
325
00:11:11,760 –> 00:11:14,560
و خوب یکی کمتر از سه است، بنابراین این
326
00:11:14,560 –> 00:11:15,040
327
00:11:15,040 –> 00:11:17,200
نادرست مرتب شده است و چه کاری را به خوبی انجام می
328
00:11:17,200 –> 00:11:18,399
دهیم، باید
329
00:11:18,399 –> 00:11:20,800
این دو مقدار را به درستی عوض کنیم، بنابراین
330
00:11:20,800 –> 00:11:21,600
331
00:11:21,600 –> 00:11:23,680
زمانی که متوجه
332
00:11:23,680 –> 00:11:25,200
شدیم چیزی که روی آن تمرکز کرده ایم
333
00:11:25,200 –> 00:11:26,560
در جای درستی نیست و در حال انجام آن هستیم، این دو مقدار را عوض می کنیم.
334
00:11:26,560 –> 00:11:27,920
با
335
00:11:27,920 –> 00:11:29,120
جایگزین کردن آن با چیزی که
336
00:11:29,120 –> 00:11:30,240
قبل از آن
337
00:11:30,240 –> 00:11:34,240
آمده است، آن را به طور موثر به عقب برمی داریم، بنابراین لیست جدید ما
338
00:11:34,240 –> 00:11:38,399
دو یک سه چهار خواهد بود
339
00:11:38,399 –> 00:11:40,560
و ما این هویج را در همان مکان نگه می داریم
340
00:11:40,560 –> 00:11:42,160
، درست
341
00:11:42,160 –> 00:11:42,959
342
00:11:42,959 –> 00:11:44,399
تا زمانی که در اینجا ما می گوییم اینجا
343
00:11:44,399 –> 00:11:46,320
جایی است که ما سعی می کنیم لیست خود را
344
00:11:46,320 –> 00:11:48,079
که قبل از این است مرتب کنیم،
345
00:11:48,079 –> 00:11:51,600
اما توجه داشته باشید که چیزی که
346
00:11:51,600 –> 00:11:53,200
روی
347
00:11:53,200 –> 00:11:54,720
آن تمرکز کرده ایم هنوز به طور بالقوه در جای درستی نیست
348
00:11:54,720 –> 00:11:57,120
که باید همان سوال خوب را بپرسیم.
349
00:11:57,120 –> 00:11:57,760
350
00:11:57,760 –> 00:11:59,600
خوب این موردی است که ما سعی می کنیم
351
00:11:59,600 –> 00:12:02,000
آن را به درستی وارد کنیم جای
352
00:12:02,000 –> 00:12:03,440
دیگری هنوز واقعاً به آنجا رسیده است، اما
353
00:12:03,440 –> 00:12:05,680
تعویض انجام شده است، آیا اکنون مرتب شده است
354
00:12:05,680 –> 00:12:07,360
یا آیا کار بیشتری برای انجام این کار داریم، یک بار
355
00:12:07,360 –> 00:12:08,880
دیگر آن را با
356
00:12:08,880 –> 00:12:10,480
موردی که قبل از آن آمده است مقایسه می کنیم
357
00:12:10,480 –> 00:12:13,600
و c یک بزرگتر از دو است. نه این
358
00:12:13,600 –> 00:12:14,880
درست نیست، بنابراین چه کاری باید به خوبی انجام
359
00:12:14,880 –> 00:12:16,480
دهیم، باید این دو مقدار را عوض کنیم
360
00:12:16,480 –> 00:12:19,200
تا یک مبادله دیگر وجود داشته باشد و
361
00:12:19,200 –> 00:12:20,399
سپس یک دو
362
00:12:20,399 –> 00:12:24,560
سه و چهار متوجه می شویم که
363
00:12:24,560 –> 00:12:27,760
هویج ما همچنان روی 3 خواهد بود، اما
364
00:12:27,760 –> 00:12:30,079
مورد ما در حال حاضر روی آن تمرکز کردهایم که اکنون
365
00:12:30,079 –> 00:12:32,560
در شاخص 0 تا انتها پایین است.
366
00:12:32,560 –> 00:12:34,160
با تعویض آن به سمت جلوی لیست منتقل شده است
367
00:12:34,160 –> 00:12:35,920
368
00:12:35,920 –> 00:12:37,920
و اکنون جای دیگری برای
369
00:12:37,920 –> 00:12:39,920
این مورد وجود ندارد که درست برود، هیچ
370
00:12:39,920 –> 00:12:41,360
موردی قبل از آن وجود ندارد.
371
00:12:41,360 –> 00:12:41,839
372
00:12:41,839 –> 00:12:44,000
چیزی که قبل از آن می آید نمی تواند بزرگتر
373
00:12:44,000 –> 00:12:45,440
از چیزی باشد که هست،
374
00:12:45,440 –> 00:12:47,519
بنابراین کار ما تمام شده است و به نظر می رسد این
375
00:12:47,519 –> 00:12:49,600
در موقعیت درستی قرار دارد
376
00:12:49,600 –> 00:12:52,480
، اکنون آماده هستیم تا فلش سبز خود را حرکت دهیم
377
00:12:52,480 –> 00:12:54,000
که می گوید خوب است، اکنون همه چیز را مرتب کرده ایم.
378
00:12:54,000 –> 00:12:55,279
که قبل از
379
00:12:55,279 –> 00:12:57,440
فلش سبز و شامل فلش سبز
380
00:12:57,440 –> 00:12:59,200
و mo می آید آن را به مورد بعدی انتقال دهید، بنابراین در مرحله بعدی
381
00:12:59,200 –> 00:13:01,360
می گوییم خوب یک،
382
00:13:01,360 –> 00:13:04,959
دو سه و چهار و اکنون
383
00:13:04,959 –> 00:13:07,600
روی این مورد تمرکز کرده ایم و می خواهیم بگوییم خوب
384
00:13:07,600 –> 00:13:08,959
، مطمئن شویم که همه چیز
385
00:13:08,959 –> 00:13:10,399
از جمله این مورد در جای درست مرتب شده است.
386
00:13:10,399 –> 00:13:12,959
ما به این مورد نگاه می کنیم
387
00:13:12,959 –> 00:13:14,079
و می
388
00:13:14,079 –> 00:13:16,880
پرسیم که نسبت به آنچه قبل از آن آمده است در جای درستی قرار دارد
389
00:13:16,880 –> 00:13:18,399
390
00:13:18,399 –> 00:13:20,639
و پاسخ مثبت است، بنابراین
391
00:13:20,639 –> 00:13:22,079
مراقبت خود را به یک مورد دیگر منتقل می کنیم و خوب متوجه می
392
00:13:22,079 –> 00:13:23,120
شویم که اکنون
393
00:13:23,120 –> 00:13:24,800
به انتهای لیست خود رسیده ایم. و با
394
00:13:24,800 –> 00:13:26,240
توجه به
395
00:13:26,240 –> 00:13:28,000
این علامت نشان می دهد که وقتی
396
00:13:28,000 –> 00:13:29,279
آن را به جلو ببریم همه چیزهایی که
397
00:13:29,279 –> 00:13:31,760
قبلاً آمده است اکنون مرتب شده است به این معنی است
398
00:13:31,760 –> 00:13:34,079
که ما یک لیست مرتب شده داریم
399
00:13:34,079 –> 00:13:36,560
خوب است، بنابراین بیایید کمی در مورد
400
00:13:36,560 –> 00:13:38,720
این سه
401
00:13:38,720 –> 00:13:40,720
ایده فکر کنیم که این فهرست شاخص
402
00:13:40,720 –> 00:13:42,399
ما خواهد بود. در الگوریتم بر روی آن تمرکز
403
00:13:42,399 –> 00:13:43,600
کردهایم که میخواهیم به
404
00:13:43,600 –> 00:13:45,839
اجرای آن نگاه کنیم، من این کار
405
00:13:45,839 –> 00:13:46,959
را درست انجام میدهم،
406
00:13:46,959 –> 00:13:49,920
بنابراین من این هویج هستم و این بدان معناست که
407
00:13:49,920 –> 00:13:52,079
ما از 1 شروع میکنیم.
408
00:13:52,079 –> 00:13:53,519
به دلایلی که قبلاً اشاره
409
00:13:53,519 –> 00:13:55,279
کردیم که نیازی نیست i یا جایی
410
00:13:55,279 –> 00:13:56,240
که روی maki متمرکز شدهایم شروع کنیم
411
00:13:56,240 –> 00:13:57,680
مطمئن باشید که ما همه چیز را
412
00:13:57,680 –> 00:14:00,560
قبل از آن تا 1 مرتب کرده ایم زیرا
413
00:14:00,560 –> 00:14:02,399
لیست عنصر منفرد از قبل
414
00:14:02,399 –> 00:14:04,399
مرتب شده است فقط به این
415
00:14:04,399 –> 00:14:07,279
دلیل که فقط یک مقدار دارد، سپس
416
00:14:07,279 –> 00:14:09,440
417
00:14:09,440 –> 00:14:11,199
مفهوم دومی را خواهیم داشت که باید پیگیری کنیم
418
00:14:11,199 –> 00:14:12,800
که j کاملاً درست است. بنابراین
419
00:14:12,800 –> 00:14:16,800
j این است که هر زمان i را افزایش دهیم
420
00:14:16,800 –> 00:14:18,880
j همان چیزی می شود که من هستم، اما هر بار
421
00:14:18,880 –> 00:14:20,399
که
422
00:14:20,399 –> 00:14:23,519
این
423
00:14:23,519 –> 00:14:24,880
مورد را به عقب عوض می کنیم، باید
424
00:14:24,880 –> 00:14:26,320
یکی از آن کم کنیم و
425
00:14:26,320 –> 00:14:26,959
باید
426
00:14:26,959 –> 00:14:28,959
شاخص خود را به عقب برگردانیم، بنابراین توجه کنید زمانی که
427
00:14:28,959 –> 00:14:30,000
ما در حال جابجایی به
428
00:14:30,000 –> 00:14:32,240
عقب هستیم، به طور موثر
429
00:14:32,240 –> 00:14:34,160
موردی را که در جای خود قرار ندارد
430
00:14:34,160 –> 00:14:35,680
به موقعیت صحیح خود منتقل می کنیم و این همان
431
00:14:35,680 –> 00:14:37,760
کاری است که می خواهیم انجام دهیم
432
00:14:37,760 –> 00:14:40,800
و سپس این آخرین مفهوم این صورتی
433
00:14:40,800 –> 00:14:43,440
در واقع فقط j منهای خواهد بود. 1
434
00:14:43,440 –> 00:14:44,639
درست است، بنابراین اگر
435
00:14:44,639 –> 00:14:49,279
j اینطور باشد i به نوعی پیشرفت ما
436
00:14:50,480 –> 00:14:52,079
از طریق مشکلی است که در حال حل
437
00:14:52,079 –> 00:14:53,839
آن هستیم، ردیابی
438
00:14:53,839 –> 00:14:55,839
جایی است که در مشکل هستیم و
439
00:14:55,839 –> 00:14:57,360
هر چیزی که قبل از
440
00:14:57,360 –> 00:15:02,160
این باشد مرتب شده j در نظر گرفته می شود، آنگاه شاخص مورد فعلی خواهد بود.
441
00:15:02,160 –> 00:15:05,440
442
00:15:06,000 –> 00:15:10,240
443
00:15:10,240 –> 00:15:13,839
444
00:15:15,680 –> 00:15:18,560
همه را درست و j منهای یک را به درستی قرار دهید
445
00:15:18,560 –> 00:15:19,440
این شاخصی است
446
00:15:19,440 –> 00:15:26,399
که قبل از j درست است
447
00:15:26,399 –> 00:15:28,079
و منطقی است که فقط j منهای
448
00:15:28,079 –> 00:15:30,399
یک است و ما همیشه خوب را
449
00:15:30,399 –> 00:15:32,160
نسبت به آنچه که پیش روی من قرار می گیرد مقایسه می کنیم آیا
450
00:15:32,160 –> 00:15:33,519
من در مکان صحیح هستم و اگر نه
451
00:15:33,519 –> 00:15:35,040
ما می خواهیم عوض کنیم و سپس به
452
00:15:35,040 –> 00:15:36,079
بررسی ادامه دهید تا زمانی که
453
00:15:36,079 –> 00:15:37,920
این مورد به درستی قرار گیرد و
454
00:15:37,920 –> 00:15:40,720
این الگوریتمی است به نام مرتب سازی درج،
455
00:15:40,720 –> 00:15:42,959
بنابراین بیایید
456
00:15:42,959 –> 00:15:46,639
457
00:15:51,839 –> 00:15:53,680
قبل از اینکه به توابع واقعی نگاه کنیم، ابتدا نگاهی به شکل واقعی آن در یک پیاده سازی بیندازیم،
458
00:15:53,680 –> 00:15:55,680
اجازه دهید ورودی خود را در نظر بگیریم،
459
00:15:55,680 –> 00:15:57,519
بنابراین توجه کنید که از
460
00:15:57,519 –> 00:15:59,279
دقیقاً همان مثالی
461
00:15:59,279 –> 00:16:02,480
که به تازگی از 2314 عبور
462
00:16:02,480 –> 00:16:05,199
کردیم و من تابعی به نام isort
463
00:16:05,199 –> 00:16:05,920
کوتاه برای
464
00:16:05,920 –> 00:16:08,639
مرتب سازی درج تعریف
465
00:16:08,639 –> 00:16:10,240
کردم، اگر مایلید دنبال کنید
466
00:16:10,240 –> 00:16:12,079
تا ویدیو را در اینجا متوقف کنید و یک
467
00:16:12,079 –> 00:16:14,079
فایل تنظیم کنید و
468
00:16:14,079 –> 00:16:15,680
سعی کنید با این الگوریتم کار کنید. با
469
00:16:15,680 –> 00:16:17,759
من
470
00:16:17,759 –> 00:16:20,800
so insertion sort تابعی است
471
00:16:20,800 –> 00:16:22,480
که ارجاع به یک لیست را می گیرد
472
00:16:22,480 –> 00:16:25,120
و متوجه می شود که این یک رویه است، بنابراین
473
00:16:25,120 –> 00:16:25,600
این
474
00:16:25,600 –> 00:16:28,639
475
00:16:28,639 –> 00:16:32,320
تابع مرجعی را که به آن داده شده است تغییر می دهد یا جه