Skip to content

Sorting algoritmus #7

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 3 commits into
base: main
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
79 changes: 79 additions & 0 deletions sorting.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import csv
import os


Expand All @@ -11,8 +12,86 @@ def read_data(file_name):
cwd_path = os.getcwd()
file_path = os.path.join(cwd_path, file_name)

with open(file_path, 'r') as file_csv:
reader = csv.DictReader(file_csv)
data = {}

for row in reader:
for header, value in row.items():
if header not in data:
data[header] = [int(value)]

else:
data[header].append(int(value))

return data

def selection_sort(num_list, direction = 'ascending'):
"""
vzestupně seřadit všechny prvky posloupnosti dle principů Selection Sor
:param list num_list: libovolně dlouhý seznam celých čísel
:param str direction: zda bude posloupnost seřazena vzestupně(ascending) nebo sestupně (descending)
:return: seřazený seznam prvků
"""
n = len(num_list)

for i in range(n):
min_max_idx = i
for j in range(i+1,n):
if direction == 'ascending':
if num_list[j] < num_list[min_max_idx]:
min_max_idx = j
elif direction == 'descending':
if num_list[j] > num_list[min_max_idx]:
min_max_idx = j
num_list[i], num_list[min_max_idx] = num_list[min_max_idx], num_list[i]
return num_list

def bubble_sort(num_list):
"""
vzestupně seřadit všechny prvky posloupnosti dle principů Bubble Sort.
:param list num_list: libovolně dlouhý seznam celých číse
:return: Funkce vrátí seřazený seznam číse
"""
n = len(num_list)

for i in range(n): #i pocet cyklu (vzdy posouvani jineho maxima)
for j in range(0, n - i - 1): # -1... poseldní prvek už je na správném místě, -i ...kolik prvku na konci uz je ok -> kolik cyklu jsme prosly
if num_list[j] > num_list[j + 1]: #porovnavani sousednich prvku v cele delce v ramci jednoho cyklu a posunuti maxima na konec
# Prohození prvků
num_list[j], num_list[j + 1] = num_list[j + 1], num_list[j]
return num_list

def insertion_sort(num_list):
"""
vzestupně seřadit všechny prvky posloupnosti dle principů Insertion Sor
:param list num_list: libovolně dlouhý seznam celých číse
:return: Funkce vrátí seřazený seznam číse
"""
n = len(num_list)
for i in range(1, n):
key = num_list[i] # prvek, který chceme vložit na správné místo
j = i - 1
# Posunuj větší prvky doprava, dokud nenajdeš správné místo
while j >= 0 and num_list[j] > key:
num_list[j + 1] = num_list[j]
j -= 1
num_list[j + 1] = key # vložení na správné místo
return num_list

def main():
data = read_data("numbers.csv")
print(data)

sorting_selection = selection_sort(data['series_1'], 'ascending')
print(sorting_selection)

sorting_bubble = bubble_sort(data['series_1'])
print(sorting_bubble)

sorting_insertion = insertion_sort(data['series_1'])
print(sorting_insertion)

pass


Expand Down