در این مطلب، ویدئو مرتب سازی حباب – ساختار داده ها و الگوریتم ها آموزش پایتون شماره 14 با زیرنویس فارسی را برای دانلود قرار داده ام. شما میتوانید با پرداخت 15 هزار تومان ، این ویدیو به علاوه تمامی فیلم های سایت را دانلود کنید.اکثر فیلم های سایت به زبان انگلیسی می باشند. این ویدئو دارای زیرنویس فارسی ترجمه شده توسط هوش مصنوعی می باشد که میتوانید نمونه ای از آن را در قسمت پایانی این مطلب مشاهده کنید.
مدت زمان فیلم: 00:15:09
تصاویر این ویدئو:
قسمتی از زیرنویس این فیلم:
00:00:00,560 –> 00:00:02,639
ما طبق معمول در این ویدیو درباره حباب کوتاه بحث
2
00:00:02,639 –> 00:00:04,640
خواهیم کرد، ما یک
3
00:00:04,640 –> 00:00:05,440
تئوری
4
00:00:05,440 –> 00:00:07,200
خواهیم داشت، سپس عکس حباب را در پایتون پیاده سازی می کنیم
5
00:00:07,200 –> 00:00:09,200
و در
6
00:00:09,200 –> 00:00:11,040
پایان یک تمرین جالب برای
7
00:00:11,040 –> 00:00:12,880
شما دارم که باید روی آن کار کنید، بنابراین مطمئن شوید که
8
00:00:12,880 –> 00:00:14,320
تا آخر ببینید
9
00:00:14,320 –> 00:00:16,880
چرا مرتب سازی انجام می شود. در وهله اول
10
00:00:16,880 –> 00:00:18,800
زمانی که در حال توسعه پروژه های بزرگ هستید
11
00:00:18,800 –> 00:00:19,199
12
00:00:19,199 –> 00:00:21,439
، مثلاً در حال ساختن یک سیستم برای
13
00:00:21,439 –> 00:00:23,119
فروشگاه بی سیم هستید
14
00:00:23,119 –> 00:00:25,279
که در رایانه خود ممکن است
15
00:00:25,279 –> 00:00:27,119
تراکنش های زیادی داشته باشید، مثلاً 30
16
00:00:27,119 –> 00:00:28,960
000 تراکنش داشته باشید
17
00:00:28,960 –> 00:00:31,279
و من می خواهم این تراکنش را بر اساس مقدار مرتب کنم.
18
00:00:31,279 –> 00:00:32,558
19
00:00:32,558 –> 00:00:35,280
من می خواهم بدانم چه کسی حداکثر
20
00:00:35,280 –> 00:00:37,440
مقدار موجودی را از فروشگاه
21
00:00:37,440 –> 00:00:39,920
من خریداری کرده است، گاهی اوقات ممکن است بخواهم آن را
22
00:00:39,920 –> 00:00:41,200
بر اساس یک نام
23
00:00:41,200 –> 00:00:43,360
مرتب کنم، بنابراین مرتب سازی یک مورد استفاده بسیار رایج
24
00:00:43,360 –> 00:00:45,520
زمانی است که شما در حال توسعه نرم افزار هستید
25
00:00:45,520 –> 00:00:47,520
و کوتاه کردن حباب یکی از تکنیک های مرتب سازی
26
00:00:47,520 –> 00:00:48,879
است.
27
00:00:48,879 –> 00:00:50,480
کار می کند، فرض کنید شما یک
28
00:00:50,480 –> 00:00:52,160
لیست از اعداد
29
00:00:52,160 –> 00:00:55,520
دارید و می خواهید این لیست را مرتب
30
00:00:55,520 –> 00:00:58,239
کنید، با مقایسه
31
00:00:58,239 –> 00:00:59,600
دو عدد اول
32
00:00:59,600 –> 00:01:04,559
38 و 9 شروع می کنید، سپس اگر 38 بزرگتر از 9 بود
33
00:01:04,559 –> 00:01:08,320
، آن را عوض می کنم، بنابراین اکنون 9 آمده است.
34
00:01:08,320 –> 00:01:11,439
در مقابل 38،
35
00:01:11,439 –> 00:01:14,240
سپس این فرآیند را برای عنصر دوم و سوم تکرار می کنم،
36
00:01:14,240 –> 00:01:15,439
37
00:01:15,439 –> 00:01:19,040
بنابراین 38 و 29 را با هم مقایسه می کنم، 29 کمتر از
38
00:01:19,040 –> 00:01:19,759
38 است،
39
00:01:19,759 –> 00:01:22,799
بنابراین البته آن را تعویض می کنم و اکنون لیست من
40
00:01:22,799 –> 00:01:23,200
41
00:01:23,200 –> 00:01:26,560
چیزی شبیه به این است،
42
00:01:26,560 –> 00:01:29,119
دوباره همان فرآیند را برای عنصر
43
00:01:29,119 –> 00:01:32,400
شماره سه انجام دهید و عنصر شماره چهار،
44
00:01:32,400 –> 00:01:36,000
بنابراین من می توانم این فرآیند را تا انتها ادامه دهم
45
00:01:36,000 –> 00:01:39,280
46
00:01:39,280 –> 00:01:42,560
و آنچه در نتیجه این فرآیند اتفاق می افتد
47
00:01:42,560 –> 00:01:43,280
48
00:01:43,280 –> 00:01:47,119
38 است که بالاترین
49
00:01:47,119 –> 00:01:50,079
عدد بود، به پایان می رسد، به همین دلیل
50
00:01:50,079 –> 00:01:51,280
است که
51
00:01:51,280 –> 00:01:54,240
زمانی که شما یک حباب دارید به این حالت Bubble shot می گویند. یک حباب آب ظاهر میشود
52
00:01:54,240 –> 00:01:55,200
53
00:01:55,200 –> 00:01:57,439
و از پایین به بالا میآید
54
00:01:57,439 –> 00:01:59,360
به طور مشابه 38
55
00:01:59,360 –> 00:02:02,320
که بالاترین عنصری بود که از پایین ظاهر میشد و تا
56
00:02:02,320 –> 00:02:03,680
57
00:02:03,680 –> 00:02:07,600
جای درست به سمت بالا رفت،
58
00:02:07,600 –> 00:02:10,160
بنابراین اگر به همه اعداد نگاه کنید، 38
59
00:02:10,160 –> 00:02:11,520
باید در آخرین اعداد باشد. موقعیت
60
00:02:11,520 –> 00:02:15,920
چون بالاترین عدد است در حال حاضر
61
00:02:15,920 –> 00:02:19,040
ما 38 را در موقعیت درست خود گرفتیم، بیایید
62
00:02:19,040 –> 00:02:20,879
دوباره همان روند را تکرار کنیم و چه
63
00:02:20,879 –> 00:02:23,040
اتفاقی میافتد، میتوانید به معنای واقعی کلمه
64
00:02:23,040 –> 00:02:27,520
گره و قلم را بردارید و این فرآیند را با دست انجام دهید
65
00:02:27,520 –> 00:02:29,200
، فکر میکنم باید این کار را انجام دهید زیرا درست
66
00:02:29,200 –> 00:02:30,879
خواهد شد. y مفید است،
67
00:02:30,879 –> 00:02:34,879
بنابراین اکنون من 9 و 29 را مقایسه می کنم
68
00:02:34,879 –> 00:02:36,959
و این در موقعیت درست بود، بنابراین
69
00:02:36,959 –> 00:02:38,000
من کاری انجام ندادم
70
00:02:38,000 –> 00:02:41,280
اما سپس 9 29 و 7 را
71
00:02:41,280 –> 00:02:42,160
مقایسه کردم و وقتی مقایسه کردم
72
00:02:42,160 –> 00:02:44,640
که متوجه شدم 7 باید جلوی 29 باشد، بنابراین من
73
00:02:44,640 –> 00:02:46,720
جارو کردم
74
00:02:46,720 –> 00:02:50,959
و سپس مقایسه کردم 29 و 2.
75
00:02:50,959 –> 00:02:54,400
سپس 15 و 29، بنابراین به یاد داشته باشید
76
00:02:54,400 –> 00:02:56,400
که در هر تکرار چه می کنیم این است که می
77
00:02:56,400 –> 00:02:58,640
آییم دو عنصر متوالی را می گیریم و
78
00:02:58,640 –> 00:03:00,000
مقایسه می کنیم و اگر
79
00:03:00,000 –> 00:03:02,080
عنصر اول بزرگتر از دومی
80
00:03:02,080 –> 00:03:04,080
باشد، فقط موقعیت را تغییر می
81
00:03:04,080 –> 00:03:06,959
دهیم، آنها را عوض می کنیم
82
00:03:07,360 –> 00:03:10,239
و وقتی شما این کار را پس از تکرار دوم انجام دهید،
83
00:03:10,239 –> 00:03:11,360
شما
84
00:03:11,360 –> 00:03:14,400
29 را در موقعیت صحیح خود به دست آورده اید،
85
00:03:14,400 –> 00:03:18,239
بنابراین اکنون دو عنصر آخر لیست من
86
00:03:18,239 –> 00:03:21,200
قبلا مرتب شده اند، بنابراین اگر
87
00:03:21,200 –> 00:03:22,480
88
00:03:22,480 –> 00:03:25,680
به تعداد عناصر
89
00:03:25,680 –> 00:03:26,720
موجود در
90
00:03:26,720 –> 00:03:29,840
لیست به انجام این فرآیند ادامه دهم، تمام لیست خود را مرتب می کنم اگر شما
91
00:03:29,840 –> 00:03:31,519
در مورد آن فکر می کنید من لازم نیست این کار را
92
00:03:31,519 –> 00:03:33,440
n بار انجام دهم، فرض کنید n اندازه یک
93
00:03:33,440 –> 00:03:35,680
آرایه است، من باید این کار را فقط n
94
00:03:35,680 –> 00:03:38,959
منهای یک بار
95
00:03:38,959 –> 00:03:42,959
انجام دهم، باید این کار را برای حلقه برای همه عناصر
96
00:03:42,959 –> 00:03:45,920
و سپس درون آن حلقه برای انجام دهم. هر بار
97
00:03:45,920 –> 00:03:47,120
که دو عنصر متوالی را با هم مقایسه می کنم
98
00:03:47,120 –> 00:03:49,280
و se را اجرا می کنم
99
00:03:49,280 –> 00:03:51,200
cond for loop
100
00:03:51,200 –> 00:03:53,439
در سراسر لیست، بنابراین اگر دو
101
00:03:53,439 –> 00:03:54,879
حلقه for دارید که
102
00:03:54,879 –> 00:03:57,280
پیچیدگی بزرگ شما به ترتیب n
103
00:03:57,280 –> 00:03:58,080
مربع است،
104
00:03:58,080 –> 00:04:00,000
اگر در مورد پیچیدگی نانوا نمی دانید،
105
00:04:00,000 –> 00:04:01,439
لطفاً
106
00:04:01,439 –> 00:04:03,280
آموزش علامت گذاری بزرگ من را در همان
107
00:04:03,280 –> 00:04:05,920
لیست پخش تماشا کنید، فکر می کنم یک ویدیوی دوم بود.
108
00:04:05,920 –> 00:04:08,000
شما یک ایده دریافت خواهید کرد بنابراین پیچیدگی زمانی
109
00:04:08,000 –> 00:04:10,000
در اینجا مرتبه n مربع است
110
00:04:10,000 –> 00:04:12,319
و پیچیدگی فضا مرتبه 1 است
111
00:04:12,319 –> 00:04:14,080
زیرا ما از فضای اضافی استفاده نمی
112
00:04:14,080 –> 00:04:14,959
113
00:04:14,959 –> 00:04:17,279
کنیم و فقط از همان آرایه استفاده می کنیم
114
00:04:17,279 –> 00:04:19,120
و حد را عوض می کنیم و برای
115
00:04:19,120 –> 00:04:21,120
تعویض عنصر ما به یک متغیر uh اضافی نیاز داریم
116
00:04:21,120 –> 00:04:24,720
بیایید این را
117
00:04:24,720 –> 00:04:26,960
118
00:04:26,960 –> 00:04:29,360
در پایتون در کد پایتون خود پیاده سازی کنیم، من این لیست عناصر را
119
00:04:29,360 –> 00:04:31,600
دارم که می خواهم با استفاده از روش Bubble shot مرتب کنم
120
00:04:31,600 –> 00:04:32,160
121
00:04:32,160 –> 00:04:34,400
در حال حاضر روش خالی است و ما
122
00:04:34,400 –> 00:04:35,280
می
123
00:04:35,280 –> 00:04:37,280
خواهیم آن را طبق نظریه ای که در آن دیدیم پیاده سازی
124
00:04:37,280 –> 00:04:38,960
کنیم.
125
00:04:38,960 –> 00:04:40,720
ارائه اولین کاری که میخواهم انجام دهم این است که میخواهم
126
00:04:40,720 –> 00:04:43,360
127
00:04:43,360 –> 00:04:45,360
اندازه عنصر را جمعآوری کنم، زیرا بسیار مفید خواهد بود، بسیار
128
00:04:45,360 –> 00:04:47,120
خوب
129
00:04:47,120 –> 00:04:50,560
و اگر به ارائهای که داشتیم فکر کنید، کاری
130
00:04:50,560 –> 00:04:52,080
که ما انجام دادیم این
131
00:04:52,080 –> 00:04:54,479
است که همه عناصر را یکی یکی مرور میکنیم
132
00:04:54,479 –> 00:04:55,199
133
00:04:55,199 –> 00:04:58,240
و ما عناصر متوالی مانند
134
00:04:58,240 –> 00:05:01,759
این را با اول مقایسه می کنیم، سپس این دو، سپس این
135
00:05:01,759 –> 00:05:02,720
دو و غیره،
136
00:05:02,720 –> 00:05:05,360
بنابراین چگونه می توانید این کار را به خوبی انجام دهید، فقط می توانید
137
00:05:05,360 –> 00:05:06,240
برای
138
00:05:06,240 –> 00:05:10,560
i در
139
00:05:10,560 –> 00:05:13,600
اندازه منهای 1
140
00:05:13,600 –> 00:05:16,639
بگویید زیرا می خواهید تا
141
00:05:16,639 –> 00:05:19,680
اینجا بروید فقط به این دلیل که بعد
142
00:05:19,680 –> 00:05:21,520
از مقایسه 88 و 34 هیچ عنصری بعد از 34 وجود ندارد،
143
00:05:21,520 –> 00:05:23,039
بنابراین
144
00:05:23,039 –> 00:05:25,759
من در اینجا منهای 1 دارم و شما می خواهید
145
00:05:25,759 –> 00:05:26,720
146
00:05:26,720 –> 00:05:29,520
دو عنصر متوالی را
147
00:05:29,520 –> 00:05:30,720
با هم مقایسه کنید، بنابراین بیایید آنها را با هم مقایسه کنیم تا
148
00:05:30,720 –> 00:05:34,240
عنصر اول همان چیزی باشد که
149
00:05:34,240 –> 00:05:38,400
من خوب است و شما می خواهید
150
00:05:38,400 –> 00:05:43,360
آن را با عنصر دوم مقایسه کنید، بنابراین اگر i
151
00:05:43,360 –> 00:05:48,639
است. بزرگتر از i به اضافه
152
00:05:48,639 –> 00:05:52,880
i به اضافه 1 خوب است، پس شما می خواهید آنها را تعویض کنید
153
00:05:52,880 –> 00:05:55,280
Swatch swap به این معنی که موقعیت آنها را تغییر دهید،
154
00:05:55,280 –> 00:05:55,919
155
00:05:55,919 –> 00:05:58,080
بنابراین چگونه می توانید این روش های استاندارد را انجام دهید که
156
00:05:58,080 –> 00:06:00,240
می توانید یک
157
00:06:00,240 –> 00:06:04,319
متغیر موقت عناصر ذخیره کنید
158
00:06:04,319 –> 00:06:07,520
زیرا من می خواهم این عناصر را انجام دهم
159
00:06:07,520 –> 00:06:11,680
من برابر با عناصر i است. به علاوه 1
160
00:06:13,759 –> 00:06:17,919
و سپس عناصر
161
00:06:18,240 –> 00:06:22,400
i به علاوه 1 برابر است با،
162
00:06:22,400 –> 00:06:25,680
بنابراین شما عناصر را به این خوبی انجام می دهید،
163
00:06:25,680 –> 00:06:29,440
بنابراین این tmp خواهد بود
164
00:06:31,280 –> 00:06:34,319
و هنگامی که اجرای این
165
00:06:34,319 –> 00:06:37,360
حلقه تمام شد
166
00:06:37,360 –> 00:06:39,360
، بالاترین عنصر را مرتب می کنید، بنابراین
167
00:06:39,360 –> 00:06:41,039
بالاترین عنصر که 88 است
168
00:06:41,039 –> 00:06:44,479
com خواهد شد. e در بالاترین موقعیت که
169
00:06:44,479 –> 00:06:44,880
170
00:06:44,880 –> 00:06:47,039
در انتها است، اجازه دهید فقط این را اجرا کنیم این
171
00:06:47,039 –> 00:06:48,560
کد کامل نیست
172
00:06:48,560 –> 00:06:51,039
، می دانم اما می خواهم آن را اجرا کنم تا ببینم چه
173
00:06:51,039 –> 00:06:52,319
اتفاقی می افتد
174
00:06:52,319 –> 00:06:55,039
روی run در pycharm کلیک راست کنید و متوجه می
175
00:06:55,039 –> 00:06:55,759
شوید که
176
00:06:55,759 –> 00:06:59,520
88 در موقعیت درستی است
177
00:06:59,520 –> 00:07:04,319
که اکنون می بینید.
178
00:07:04,319 –> 00:07:07,599
اگر این فرآیند را دو بار انجام دهم،
179
00:07:07,599 –> 00:07:09,599
دومین عنصر بالاتر
180
00:07:09,599 –> 00:07:11,759
در موقعیت مناسب قرار می گیرد
181
00:07:11,759 –> 00:07:13,759
که 67 است، فرض کنید
182
00:07:13,759 –> 00:07:16,160
می خواهم 67 را در اینجا نگه دارم، پس چگونه می توانم این کار را به
183
00:07:16,160 –> 00:07:17,039
184
00:07:17,039 –> 00:07:21,680
خوبی انجام دهم، اگر برای هر حلقه ای مانند این کار را انجام دهید، به آن فکر کنید.
185
00:07:21,759 –> 00:07:26,960
4k در محدوده
186
00:07:28,840 –> 00:07:30,160
2. فرض
187
00:07:30,160 –> 00:07:33,280
کنید این کار را دو بار
188
00:07:33