# -*- coding: utf-8 -*-

"""
基本思想：
从未排序的序列中找到一个最小的元素，放到第一位，再从剩余未排序的序列中找到最小的元素，放到第二位，依此类推，直到所有元素都已排序完毕。
假设序列元素总共n+1个，则我们需要找n轮，就可以使该序列排好序。
在每轮中，我们可以这样做：
    用未排序序列的第一个元素和后续的元素依次相比较，如果后续元素小，则后续元素和第一个元素交换位置放到，这样一轮后，排在第一位的一定是最小的。这样进行n轮，就可排序。


选择排序（Selection sort）是一种简单直观的排序算法。它的工作原理大致是将后面的元素最小元素一个个取出然后按顺序放置。
步骤：
1. 在未排序序列中找到最小（大）元素，存放到排序序列的起始位置，
2. 再从剩余未排序元素中继续寻找最小（大）元素，然后放到已排序序列的末尾。
3. 重复第二步，直到所有元素均排序完毕。

"""

def select_sort(arr):
    length = len(arr)
    for i in xrange(0, length):
        min = i
        for j in range(i+1, length):
            if arr[j] < arr[min]:
                min=j
                arr[min], arr[i] = arr[i], arr[min]
    return arr

if __name__ == "__main__":
    list1 = [1, 3, 2, 5, 4]
    list1=select_sort(list1)
    print list1

# -*- coding: utf-8 -*-

"""
基本思想：
从未排序的序列中找到一个最小的元素，放到第一位，再从剩余未排序的序列中找到最小的元素，放到第二位，依此类推，直到所有元素都已排序完毕。
假设序列元素总共n+1个，则我们需要找n轮，就可以使该序列排好序。
在每轮中，我们可以这样做：
    用未排序序列的第一个元素和后续的元素依次相比较，如果后续元素小，则后续元素和第一个元素交换位置放到，这样一轮后，排在第一位的一定是最小的。这样进行n轮，就可排序。


选择排序（Selection sort）是一种简单直观的排序算法。它的工作原理大致是将后面的元素最小元素一个个取出然后按顺序放置。
步骤：
1. 在未排序序列中找到最小（大）元素，存放到排序序列的起始位置，
2. 再从剩余未排序元素中继续寻找最小（大）元素，然后放到已排序序列的末尾。
3. 重复第二步，直到所有元素均排序完毕。

"""

def select_sort(arr):
    length = len(arr)
    for i in xrange(0, length):
        min = i
        for j in range(i+1, length):
            if arr[j] < arr[min]:
                min=j
                arr[min], arr[i] = arr[i], arr[min]
    return arr

if __name__ == "__main__":
    list1 = [1, 3, 2, 5, 4]
    list1=select_sort(list1)
    print list1

# -*- coding: utf-8 -*- 基本思想：
 从未排序的序列中找到一个最小的元素，放到第一位，再从剩余未排序的序列中找到最小的元素，放到第二位，依此类推，直到所有元素都已排序完毕。
 假设序列元素总共n+1个，则我们需要找n轮，就可以使该序列排好序。
 在每轮中，我们可以这样做：
     用未排序序列的第一个元素和后续的元素依次相比较，如果后续元素小，则后续元素和第一个元素交换位置放到，这样一轮后，排在第一位的一定是最小的。这样进行n轮，就可排序。
 
 
 选择排序（Selection sort）是一种简单直观的排序算法。它的工作原理大致是将后面的元素最小元素一个个取出然后按顺序放置。
 步骤：
 1. 在未排序序列中找到最小（大）元素，存放到排序序列的起始位置，
 2. 再从剩余未排序元素中继续寻找最小（大）元素，然后放到已排序序列的末尾。
 3. 重复第二步，直到所有元素均排序完毕。