選擇排序幾乎就是學習算法時的hello world。python
選擇排序的思想就是將一個數組當作兩個部分,一個已排序數組和一個未排序的數組。考慮升序的排序,咱們要作的就是從未排序的數組中選擇出最小的元素依次放到已排序的數組中。算法
算法的僞代碼以下數組
init 0,n//初始化數組 loop i in 0 to n-1 //循環數組,當未排序元素還剩下一個的時候,一定是最大元素,因此這裏n-1 min_index = i //初始最小值爲未排序數組的初始值,考慮索引從0開始,也就是已排序數組的數量。因爲每次i循環一定會選出一個最小元素,因此已排序數組數量就是i的值 loop j in i+1 to n //由於首個未排序數組用來作錨,循環除首位元素外未排序的數組 if array[j]<array[min_index] //若是下一個元素比最小元素更小,更新當前最小元素的索引 min_index = j if min_index<>i //循環結束,若是發現最小索引改變了,交換元素位置,使得已排序元素數量加1 swap array[i],array[min_index]
python 代碼以下dom
import random random_items = [random.randint(-50, 100) for c in range(32)] def selection_sort(items): for i in range(len(items)-1): min_index = i for j in range(i+1,len(items)): if items[j]<items[min_index]: min_index = j if min_index != i: items[i],items[min_index]=items[min_index],items[i] print 'Before: ', random_items selection_sort(random_items) print 'After : ', random_items
部分代碼來自於:http://danishmujeeb.com/blog/2014/01/basic-sorting-algorithms-implemented-in-pythonoop