The Selection Sort

BadSelectionSort(array, start, stop) 
  1. for i = start; i < stop; i++
  2. for j = i+1; j <= stop; j++
  3. if array[i] > array[j]
  4. swap(array[i],array[j])
  5. return

SelectionSort(array, start, stop)
  1. for i= start; i < stop-1 ; i++
  2. min = i
  3. for j = i+1; j < stop; j++
  4. if array[min] > array[j]
  5. min = j
  6. if i != min
  7. swap(array[i], array[min])
  8. return

Is this algorithm correct?

Why did we look at this sort?