From 8d5ce25c0cec8e03811629ca578810d81a78b69d Mon Sep 17 00:00:00 2001 From: Praise Tompane Date: Thu, 11 Sep 2025 13:46:08 +0200 Subject: [PATCH 1/2] docs: multikey and depth sorting --- todo_accreditation.txt | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 todo_accreditation.txt diff --git a/todo_accreditation.txt b/todo_accreditation.txt new file mode 100644 index 000000000..cbd6197db --- /dev/null +++ b/todo_accreditation.txt @@ -0,0 +1,15 @@ +- objectives: get accredited wit BSc Computer science +- target date: 2025-Sep-15 to 2027-Sep-15 +- role: { Computer Scientist} +- remuneration: R0 +- constraints: + - time constraint: + - 12 hours per week + - 6 hours per day + +============================================================================================== +- next₀: + - https://github.com/ossu/computer-science: + - current: + - https://ocw.mit.edu/courses/6-100l-introduction-to-cs-and-programming-using-python-fall-2022/pages/material-by-lecture/ + - computation/4_software_and_its_engineering/2_software_creation_and_management: 6.100L From b648f32d91b63fc1cd96df2c229330ca8d5a3e57 Mon Sep 17 00:00:00 2001 From: Praise Tompane Date: Thu, 11 Sep 2025 14:46:39 +0200 Subject: [PATCH 2/2] fix: order by arbitary number of keys --- .gitignore | 4 +- .spellcheck_exceptions_dictionary.txt | 1 + .../sorting/insertion_sort/__init__.py | 0 .../insertion_sort/impl/insertion_sort.py | 8 +++ .../insertion_sort/uses_cases/__init__.py | 0 .../uses_cases/arbitary_key_sort.py | 56 +++++++++++-------- todo_accreditation.txt | 15 ----- 7 files changed, 44 insertions(+), 40 deletions(-) create mode 100644 0_theory_of_computation/4_design_and_analysis_of_algorithms/0_data_structures_design_and_analysis/1_sorting_and_searching/sorting/insertion_sort/__init__.py create mode 100644 0_theory_of_computation/4_design_and_analysis_of_algorithms/0_data_structures_design_and_analysis/1_sorting_and_searching/sorting/insertion_sort/impl/insertion_sort.py create mode 100644 0_theory_of_computation/4_design_and_analysis_of_algorithms/0_data_structures_design_and_analysis/1_sorting_and_searching/sorting/insertion_sort/uses_cases/__init__.py delete mode 100644 todo_accreditation.txt diff --git a/.gitignore b/.gitignore index 3caa858e5..ae14b85cc 100644 --- a/.gitignore +++ b/.gitignore @@ -209,4 +209,6 @@ applications/ **/sql # command and control languages -**/shell \ No newline at end of file +**/shell + +todo_accreditation.txt \ No newline at end of file diff --git a/.spellcheck_exceptions_dictionary.txt b/.spellcheck_exceptions_dictionary.txt index a087b139a..063e3b5eb 100755 --- a/.spellcheck_exceptions_dictionary.txt +++ b/.spellcheck_exceptions_dictionary.txt @@ -334,6 +334,7 @@ Qxx # institutions +ossu UNISA thinkchecksubmit thescipub diff --git a/0_theory_of_computation/4_design_and_analysis_of_algorithms/0_data_structures_design_and_analysis/1_sorting_and_searching/sorting/insertion_sort/__init__.py b/0_theory_of_computation/4_design_and_analysis_of_algorithms/0_data_structures_design_and_analysis/1_sorting_and_searching/sorting/insertion_sort/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/0_theory_of_computation/4_design_and_analysis_of_algorithms/0_data_structures_design_and_analysis/1_sorting_and_searching/sorting/insertion_sort/impl/insertion_sort.py b/0_theory_of_computation/4_design_and_analysis_of_algorithms/0_data_structures_design_and_analysis/1_sorting_and_searching/sorting/insertion_sort/impl/insertion_sort.py new file mode 100644 index 000000000..28ced7c72 --- /dev/null +++ b/0_theory_of_computation/4_design_and_analysis_of_algorithms/0_data_structures_design_and_analysis/1_sorting_and_searching/sorting/insertion_sort/impl/insertion_sort.py @@ -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: diff --git a/0_theory_of_computation/4_design_and_analysis_of_algorithms/0_data_structures_design_and_analysis/1_sorting_and_searching/sorting/insertion_sort/uses_cases/__init__.py b/0_theory_of_computation/4_design_and_analysis_of_algorithms/0_data_structures_design_and_analysis/1_sorting_and_searching/sorting/insertion_sort/uses_cases/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/0_theory_of_computation/4_design_and_analysis_of_algorithms/0_data_structures_design_and_analysis/1_sorting_and_searching/sorting/selection_sort/uses_cases/arbitary_key_sort.py b/0_theory_of_computation/4_design_and_analysis_of_algorithms/0_data_structures_design_and_analysis/1_sorting_and_searching/sorting/selection_sort/uses_cases/arbitary_key_sort.py index 60f1c25a1..e26ae856a 100644 --- a/0_theory_of_computation/4_design_and_analysis_of_algorithms/0_data_structures_design_and_analysis/1_sorting_and_searching/sorting/selection_sort/uses_cases/arbitary_key_sort.py +++ b/0_theory_of_computation/4_design_and_analysis_of_algorithms/0_data_structures_design_and_analysis/1_sorting_and_searching/sorting/selection_sort/uses_cases/arbitary_key_sort.py @@ -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") diff --git a/todo_accreditation.txt b/todo_accreditation.txt deleted file mode 100644 index cbd6197db..000000000 --- a/todo_accreditation.txt +++ /dev/null @@ -1,15 +0,0 @@ -- objectives: get accredited wit BSc Computer science -- target date: 2025-Sep-15 to 2027-Sep-15 -- role: { Computer Scientist} -- remuneration: R0 -- constraints: - - time constraint: - - 12 hours per week - - 6 hours per day - -============================================================================================== -- next₀: - - https://github.com/ossu/computer-science: - - current: - - https://ocw.mit.edu/courses/6-100l-introduction-to-cs-and-programming-using-python-fall-2022/pages/material-by-lecture/ - - computation/4_software_and_its_engineering/2_software_creation_and_management: 6.100L