Skip to content

Commit 7f9d0fb

Browse files
committed
Insertion sort
1 parent fea3ca1 commit 7f9d0fb

File tree

2 files changed

+46
-1
lines changed

2 files changed

+46
-1
lines changed

7_insertion_sort.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
unsorted_list = [10, 5, 8, 4, 6, 1, 3, 7, 2, 9, -1]
2+
3+
4+
for i in range(1, len(unsorted_list)):
5+
6+
temp = unsorted_list[i]
7+
8+
j = i - 1
9+
while j >= 0 and temp < unsorted_list[j]:
10+
unsorted_list[j + 1] = unsorted_list[j]
11+
j -= 1
12+
unsorted_list[j + 1] = temp
13+
14+
15+
print(unsorted_list)

README.md

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -731,13 +731,43 @@ print(unsorted_list)
731731
<h3>
732732
الگوریتم مرتب سازی درجی
733733
</h3>
734+
ویکی پدیا بخوبی نخوه کار کردن این الگوریتم را توضیح داده است:
734735

736+
این الگوریتم به این صورت عمل می‌کند که تمام عناصر لیست را یکی یکی برمی‌دارد و آن را در موقعیت مناسب در بخش مرتب شده قرار می‌دهد. انتخاب عنصر مورد نظر، اختیاری است و می‌تواند توسط هر الگوریتم انتخابی، انتخاب شود. مرتب‌سازی درجی به صورت درجا عمل می‌کند. نتیجه عمل بعد از k مرحله، حاوی k عنصر انتخاب شده به صورت مرتب شده‌است.
737+
738+
معمول‌ترین نسخه از این الگوریتم که روی آرایه‌ها عمل می‌کند، به این صورت است:
739+
740+
فرض کنید یک تابع به اسم Insert داریم که داده را در بخش مرتب شده در ابتدای آرایه درج می‌کند. این تابع با شروع از انتهای سری شروع به کار می‌کند و هر عنصر را به سمت راست منتقل می‌کند تا وقتی که جای مناسب برای عنصر جدید پیدا شود. این تابع این اثر جانبی را دارد که عنصر دقیقاً بعد از بخش مرتب شده را رونویسی می‌کند.
741+
برای اعمال مرتب‌ساز درجی، از انتهای سمت چپ آرایه شروع می‌کنیم و با صدا زدن تابع insert، هر عنصر را به موقعیت درستش می‌بریم. آن بخشی که عنصر فعلی را در آن می‌کنیم، در ابتدای آرایه و در اندیس‌هایی است که آن‌ها را قبلاً آزمایش کرده‌ایم. هر بار صدا زدن تابع insert، یک عنصر را رونویسی می‌کند، اما این مسئله مشکلی ایجاد نمی‌کند، زیرا این داده، همانی است که الان در حال درج آن هستیم.
742+
</div>
743+
744+
![data-structures.png](https://upload.wikimedia.org/wikipedia/commons/0/0f/Insertion-sort-example-300px.gif)
745+
746+
747+
<div dir="rtl">
748+
مثال در پایتون:
749+
</div>
735750

736751
```Python
752+
unsorted_list = [10, 5, 8, 4, 6, 1, 3, 7, 2, 9, -1]
737753

738-
```
739754

755+
for i in range(1, len(unsorted_list)):
756+
757+
temp = unsorted_list[i]
758+
759+
j = i - 1
760+
while j >= 0 and temp < unsorted_list[j]:
761+
unsorted_list[j + 1] = unsorted_list[j]
762+
j -= 1
763+
unsorted_list[j + 1] = temp
740764

765+
766+
print(unsorted_list)
767+
768+
```
769+
770+
<div dir="rtl">
741771
<h3>
742772
الگوریتم مرتب سازی حبابی
743773
</h3>

0 commit comments

Comments
 (0)