gokaymeydan's picture
Upload 12 files
5c8f53e verified
# insertion sort
def insertion_sort(arr):
steps = [] # keep all steps here
for j in range(1, len(arr)):
key = arr[j]
i = j - 1
while i >= 0 and arr[i] > key:
arr[i + 1] = arr[i]
i -= 1
steps.append(arr.copy()) # her kaydırma adımını kaydet
arr[i + 1] = key
steps.append(arr.copy()) # save every moment
# arr listesini sıralıyor
# Ama her küçük değişiklikten sonra o anki halini steps listesine ekliyor
return steps
# nested listeler için deepcopy()
# Liste içinde başka listeler varsa, onları da ayrı ayrı kopyalar
from algorithms import insertion_sort
my_list=[5,2,4,6,1,3]
steps = insertion_sort(my_list)
for i, step in enumerate(steps):
print(f"Step {i + 1}: {step}")
# enumerate(steps) → Hem adımı (i) hem listeyi (step) aynı anda alır
# Her sıralama adımı steps içinde kayıtlı olduğu için tüm sıralama sürecini gözlemleyebiliriz
# Bu yapı daha sonra Streamlit arayüzüne kolayca taşınabilir
def print_step(step):
for num in step:
bar = '█' * num # Sayıya göre bar uzunluğu
print(f"{num:>2} {bar}")
print("-" * 20) # Adımlar arasında ayraç