|
import streamlit as st |
|
import time |
|
import random |
|
import numpy as np |
|
|
|
|
|
def bubble_sort(arr): |
|
steps = [] |
|
n = len(arr) |
|
for i in range(n): |
|
for j in range(0, n - i - 1): |
|
if arr[j] > arr[j + 1]: |
|
arr[j], arr[j + 1] = arr[j + 1], arr[j] |
|
steps.append(list(arr)) |
|
return steps |
|
|
|
|
|
def insertion_sort(arr): |
|
steps = [] |
|
for i in range(1, len(arr)): |
|
key = arr[i] |
|
j = i - 1 |
|
while j >= 0 and key < arr[j]: |
|
arr[j + 1] = arr[j] |
|
j -= 1 |
|
steps.append(list(arr)) |
|
arr[j + 1] = key |
|
steps.append(list(arr)) |
|
return steps |
|
|
|
|
|
def selection_sort(arr): |
|
steps = [] |
|
n = len(arr) |
|
for i in range(n): |
|
min_index = i |
|
for j in range(i + 1, n): |
|
if arr[j] < arr[min_index]: |
|
min_index = j |
|
arr[i], arr[min_index] = arr[min_index], arr[i] |
|
steps.append(list(arr)) |
|
return steps |
|
|
|
|
|
def animate_sorting(steps): |
|
for step in steps: |
|
st.write(step) |
|
time.sleep(0.5) |
|
|
|
|
|
def main(): |
|
st.title("Sorting Algorithms Visualization") |
|
|
|
|
|
user_input = st.text_input("Enter a list of numbers (comma separated):", "64, 34, 25, 12, 22, 11, 90") |
|
|
|
|
|
if user_input: |
|
try: |
|
arr = [int(x) for x in user_input.split(',')] |
|
except ValueError: |
|
st.error("Please enter a valid list of integers.") |
|
return |
|
|
|
|
|
algorithm = st.selectbox("Select sorting algorithm:", ("Bubble Sort", "Insertion Sort", "Selection Sort")) |
|
|
|
|
|
if st.button('Sort'): |
|
steps = [] |
|
if algorithm == "Bubble Sort": |
|
steps = bubble_sort(arr) |
|
elif algorithm == "Insertion Sort": |
|
steps = insertion_sort(arr) |
|
elif algorithm == "Selection Sort": |
|
steps = selection_sort(arr) |
|
|
|
|
|
animate_sorting(steps) |
|
|
|
|
|
st.write("Sorted Array:", arr) |
|
|
|
|
|
if __name__ == "__main__": |
|
main() |
|
|