Skip to content
Open
Show file tree
Hide file tree
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
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -209,4 +209,6 @@ applications/
**/sql

# command and control languages
**/shell
**/shell

todo_accreditation.txt
1 change: 1 addition & 0 deletions .spellcheck_exceptions_dictionary.txt
Original file line number Diff line number Diff line change
Expand Up @@ -334,6 +334,7 @@ Qxx


# institutions
ossu
UNISA
thinkchecksubmit
thescipub
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
from typing import List, Any


def sort(values: List[Any]):
_sorted_values = []
for v in values:
for _v in _sorted_values:
if v < _v:
Original file line number Diff line number Diff line change
@@ -1,29 +1,37 @@
from typing import List, Any
import pprint


def _sort(values: List[Any], key: str, previous_key: str):
for target_sort_index in range(0, len(values)): # O(𝑁)
minimum_value_index = target_sort_index
for j in range(target_sort_index + 1, len(values)): # O(𝑁)
if (
values[minimum_value_index][key] > values[j][key]
and values[minimum_value_index][previous_key] >= values[j][previous_key]
): # O(1)
minimum_value_index = j
def multilevel_selection_sort(elements, sort_by_list):
for sort_by in sort_by_list[-1::-1]:
for x in range(len(elements)):
min_index = x
for y in range(x, len(elements)):
if elements[y][sort_by] < elements[min_index][sort_by]:
min_index = y
if x != min_index:
elements[x], elements[min_index] = elements[min_index], elements[x]
print("after firs sort")
pprint.pprint(elements)

if minimum_value_index != target_sort_index:
temp = values[minimum_value_index]
values[minimum_value_index] = values[target_sort_index]
values[target_sort_index] = temp

return values
if __name__ == "__main__":
elements = [
{"First Name": "Raj", "Last Name": "Nayyar"},
{"First Name": "Suraj", "Last Name": "Sharma"},
{"First Name": "Karan", "Last Name": "Kumar"},
{"First Name": "Jade", "Last Name": "Canary"},
{"First Name": "Raj", "Last Name": "Thakur"},
{"First Name": "Raj", "Last Name": "Sharma"},
{"First Name": "Kiran", "Last Name": "Kamla"},
{"First Name": "Armaan", "Last Name": "Kumar"},
{"First Name": "Jaya", "Last Name": "Sharma"},
{"First Name": "Ingrid", "Last Name": "Galore"},
{"First Name": "Jaya", "Last Name": "Seth"},
{"First Name": "Armaan", "Last Name": "Dadra"},
{"First Name": "Ingrid", "Last Name": "Maverick"},
{"First Name": "Aahana", "Last Name": "Arora"},
]


def sort(values: List[Any], keys: List[str]):
sorted_values = values
previous_key = keys[0]
for k in keys:
sorted_values = _sort(sorted_values, k, previous_key)
previous_key = k

return sorted_values
# print(f"Given unsorted array:", *elements, sep="\n")
multilevel_selection_sort(elements, ["First Name", "Last Name"])
print(f"Array after Multi-Level Sorting:", *elements, sep="\n")
Loading