# Chapter 2: Selection Sort

* **Array**

  * good at getting the address of an element

* **Linked List**
  * linked lists are so much better at inserts
  * delete an element

* **Selection sort**

  * Step 1: Find the the smallest element
  * Step 2: Use it on selection sort function

  ```python
  def findSmallest(arr):
    smallest = arr[0]  //Stores the smallest value
    smallest_index = 0 //Stores the index of the smallest value
    for i in range(1,len(arr)):
        if arr[i] < smallest:
          smallest = arr[i]
          smallest_index = i
    return smallest_index
  print(findSmallest([5,3,6,2,10]))  => 3

  def selectionSort(arr):  ///Sorts an array
    newArr = []
    for i in range(len(arr)):
        smallest = findSmallest(arr)
        newArr.append(arr.pop(smallest)) //add it to the new array
    return newArr

  print selectionSort([5,3,6,2,10]) => [2, 3, 5, 6, 10]
  ```
