|
1 | | -def multilevel_selection_sort(elements,sort_by): |
2 | | - set_of_indices=set() |
3 | | - for x in range(len(elements)): |
4 | | - for kx in (elements[x].keys()): |
5 | | - set_of_indices.add(kx) |
6 | | - |
7 | | - set_of_indices.remove(sort_by) |
| 1 | +def multilevel_selection_sort(elements, sort_by_list): |
| 2 | + for sort_by in sort_by_list[-1::-1]: |
| 3 | + for x in range(len(elements)): |
| 4 | + min_index = x |
| 5 | + for y in range(x, len(elements)): |
| 6 | + if elements[y][sort_by] < elements[min_index][sort_by]: |
| 7 | + min_index = y |
| 8 | + if x != min_index: |
| 9 | + elements[x], elements[min_index] = elements[min_index], elements[x] |
8 | 10 |
|
9 | | - for x in range(len(elements)): |
10 | | - min_index = x |
11 | | - for y in range(x, len(elements)): |
12 | | - if elements[y][sort_by] < elements[min_index][sort_by]: |
13 | | - min_index = y |
14 | | - if x != min_index: |
15 | | - elements[x], elements[min_index] = elements[min_index], elements[x] |
16 | | - for indx in set_of_indices: |
17 | | - list_of_sortby=list(set([i[sort_by] for i in elements])) |
18 | | - for this_of_sort in list_of_sortby: |
19 | | - for x in range(len(elements)): |
20 | | - if elements[x][sort_by]==this_of_sort: |
21 | | - min_index = x |
22 | | - for y in range(x, len(elements)): |
23 | | - if elements[y][sort_by]==this_of_sort: |
24 | | - if elements[y][indx] < elements[min_index][indx]: |
25 | | - min_index = y |
26 | | - if x != min_index: |
27 | | - elements[x], elements[min_index] = elements[min_index], elements[x] |
28 | | - sort_by=indx |
29 | 11 |
|
30 | 12 | if __name__ == '__main__': |
31 | 13 | elements = [ |
32 | | - {'First Name': 'Raj', 'Last Name': 'Nayyar'}, |
33 | | - {'First Name': 'Suraj', 'Last Name': 'Sharma'}, |
34 | | - {'First Name': 'Karan', 'Last Name': 'Kumar'}, |
35 | | - {'First Name': 'Jade', 'Last Name': 'Canary'}, |
36 | | - {'First Name': 'Raj', 'Last Name': 'Thakur'}, |
37 | | - {'First Name': 'Raj', 'Last Name': 'Sharma'}, |
38 | | - {'First Name': 'Kiran', 'Last Name': 'Kamla'}, |
39 | | - {'First Name': 'Armaan', 'Last Name': 'Kumar'}, |
40 | | - {'First Name': 'Jaya', 'Last Name': 'Sharma'}, |
41 | | - {'First Name': 'Ingrid', 'Last Name': 'Galore'}, |
42 | | - {'First Name': 'Jaya', 'Last Name': 'Seth'}, |
43 | | - {'First Name': 'Armaan', 'Last Name': 'Dadra'}, |
44 | | - {'First Name': 'Ingrid', 'Last Name': 'Maverick'}, |
45 | | - {'First Name': 'Aahana', 'Last Name': 'Arora'} |
| 14 | + {'First Name': 'Raj', 'Last Name': 'Nayyar', 'Middle Name': 'B'}, |
| 15 | + {'First Name': 'Suraj', 'Last Name': 'Sharma', 'Middle Name': ''}, |
| 16 | + {'First Name': 'Karan', 'Last Name': 'Kumar', 'Middle Name': ''}, |
| 17 | + {'First Name': 'Jade', 'Last Name': 'Canary', 'Middle Name': ''}, |
| 18 | + {'First Name': 'Raj', 'Last Name': 'Thakur', 'Middle Name': 'A'}, |
| 19 | + {'First Name': 'Raj', 'Last Name': 'Sharma', 'Middle Name': 'A'}, |
| 20 | + {'First Name': 'Kiran', 'Last Name': 'Kamla', 'Middle Name': ''}, |
| 21 | + {'First Name': 'Armaan', 'Last Name': 'Kumar', 'Middle Name': ''}, |
| 22 | + {'First Name': 'Jaya', 'Last Name': 'Sharma', 'Middle Name': ''}, |
| 23 | + {'First Name': 'Ingrid', 'Last Name': 'Galore', 'Middle Name': ''}, |
| 24 | + {'First Name': 'Jaya', 'Last Name': 'Seth', 'Middle Name': ''}, |
| 25 | + {'First Name': 'Armaan', 'Last Name': 'Dadra', 'Middle Name': ''}, |
| 26 | + {'First Name': 'Ingrid', 'Last Name': 'Maverick', 'Middle Name': ''}, |
| 27 | + {'First Name': 'Aahana', 'Last Name': 'Arora', 'Middle Name': ''} |
46 | 28 | ] |
47 | 29 |
|
48 | | - print(f'Given unsorted array:',*elements,sep='\n') |
49 | | - multilevel_selection_sort(elements,'First Name') |
50 | | - print(f'Array after Multi-Level Sorting:',*elements,sep='\n') |
51 | | - |
52 | | - |
| 30 | + print(f'Given unsorted array:', *elements, sep='\n') |
| 31 | + multilevel_selection_sort( |
| 32 | + elements, ['First Name', 'Last Name']) |
| 33 | + print(f'Array after Multi-Level Sorting:', *elements, sep='\n') |
0 commit comments