In [1]:
def selection_sort(a):
    
    for i in range(len(a)):
        
        mini = i
        for j in range(i+1, len(a)):
            if a[mini] > a[j]:
                mini = j
        a[mini], a[i] = a[i], a[mini]
    
    return a

In [2]:
alist = [4,2,1,10,5,3,100]
print(selection_sort(alist))


[1, 2, 3, 4, 5, 10, 100]

In [ ]:


In [6]:
# grokking algorithms
def selection_sort2(a):
    new_a = []
    for i in range(len(a)):
        smallest = find_smallest(a)
        new_a.append(a.pop(smallest))
    return new_a

def find_smallest(a):
    #smallest = a[0]
    smallest_idx = 0
    
    for i in range(1, len(a)):
        if a[i] < a[smallest_idx]:
            #smallest = a[i]
            smallest_idx = i
            
    return smallest_idx

In [ ]:


In [7]:
alist = [4,2,1,10,5,3,100]
print(selection_sort2(alist))


[1, 2, 3, 4, 5, 10, 100]

In [ ]: