| 
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