data-structures-algorithms-python icon indicating copy to clipboard operation
data-structures-algorithms-python copied to clipboard

My answer for insertion sort excercise

Open m1ng2e opened this issue 5 years ago • 0 comments

I think the solution may have issues, so I attached my solution.

`def selection_sort(arr): size = len(arr)

for i in range(size-1):
    min_index = i
    for j in range(min_index+1, size):
        if arr[j] < arr[min_index]:
            min_index = j

    if i != min_index:
        arr[i], arr[min_index] = arr[min_index], arr[i]

def grouper(sequence, key): groups = [] uni_list = [] for x in sequence: uni_list.append(x[key])

new_list = list(set(uni_list))
selection_sort(new_list)
for i in new_list:
    groups.append([x for x in sequence if x[key] == i])
return groups

def selection_sort_key(arr, key): size = len(arr)

for i in range(size-1):
    min_index = i
    for j in range(min_index+1, size):
        if arr[j][key] < arr[min_index][key]:
            min_index = j

    if i != min_index:
        arr[i], arr[min_index] = arr[min_index], arr[i]

def selection_sort_multilevel(arr, preference): x = 0 key = preference[x] size = len(arr) for i in range(size-1): min_index = i for j in range(min_index+1, size): if arr[j][key] < arr[min_index][key]: min_index = j

    if i != min_index:
        arr[i], arr[min_index] = arr[min_index], arr[i]
x += 1

while x < len(preference):
    key = preference[x]
    groups = grouper(arr, preference[x-1])

    new_groups = []
    for group in groups:
        selection_sort_key(group, key)
        new_groups += group
    x += 1
    arr[0:] = new_groups[0:]

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'} ] preference = [ 'First Name' , 'Last Name' ] selection_sort_multilevel(elements, preference) print(elements)`

m1ng2e avatar Dec 22 '20 01:12 m1ng2e