1- def multilevel_selection_sort (elements ):
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+ #
8+ print (set_of_indices )
9+ #
10+
11+ set_of_indices .remove (sort_by )
12+
13+ #
14+ print (set_of_indices )
15+ #
16+
217 for x in range (len (elements )):
318 min_index = x
419 for y in range (x , len (elements )):
5- if elements [y ]['First Name' ] < elements [min_index ]['First Name' ]:
20+ if elements [y ][sort_by ] < elements [min_index ][sort_by ]:
621 min_index = y
722 if x != min_index :
823 elements [x ], elements [min_index ] = elements [min_index ], elements [x ]
9- list_of_firstnames = list (set ([i ['First Name' ] for i in elements ]))
10- for firstname in list_of_firstnames :
11- for x in range (len (elements )):
12- if elements [x ]['First Name' ]== firstname :
13- min_index = x
14- for y in range (x , len (elements )):
15- if elements [y ]['First Name' ]== firstname :
16- if elements [y ]['Last Name' ] < elements [min_index ]['Last Name' ]:
17- min_index = y
18- if x != min_index :
19- elements [x ], elements [min_index ] = elements [min_index ], elements [x ]
24+ for indx in set_of_indices :
25+ list_of_sortby = list (set ([i [sort_by ] for i in elements ]))
26+ for this_of_sort in list_of_sortby :
27+ for x in range (len (elements )):
28+ if elements [x ][sort_by ]== this_of_sort :
29+ min_index = x
30+ for y in range (x , len (elements )):
31+ if elements [y ][sort_by ]== this_of_sort :
32+ if elements [y ][indx ] < elements [min_index ][indx ]:
33+ min_index = y
34+ if x != min_index :
35+ elements [x ], elements [min_index ] = elements [min_index ], elements [x ]
36+ sort_by = indx
2037
2138if __name__ == '__main__' :
2239 elements = [
@@ -37,7 +54,7 @@ def multilevel_selection_sort(elements):
3754 ]
3855
3956 print (f'Given unsorted array:' ,* elements ,sep = '\n ' )
40- multilevel_selection_sort (elements )
57+ multilevel_selection_sort (elements , 'First Name' )
4158 print (f'Array after Multi-Level Sorting:' ,* elements ,sep = '\n ' )
4259
4360
0 commit comments