1. 程式人生 > >Python---選擇排序

Python---選擇排序

選擇排序(從小到大排序)思想:在一串無序的資料中,開始第二個值與第一個值比較,若小於第一個值則交換位置,接著第三個值與第一個值比較,小於第一個值則交換位置,否則不動,依次類推,每個值都與第一個值(可能始終是在變化的)比完一遍後就確定了最小值,並把它放在第一個位置,第二次遍歷針對最小值之後的資料,按照同等方法遍歷,確定次小值放在第二個位置。這樣,假設有n個數據,則遍歷次數為n-1,假設將要進行的是第i次遍歷,則說明已經確定了i-1個值,此時的第i個值就是第一個值,充當了被比較的物件,之後從i+1到n都要與它比較,確定第i個最小值。

實現程式:

import random,time


def select_sort(list):
    for 
i in range(len(list)-1): for j in range(i+1,len(list)): if list[i]>list[j]: tmp=list[i] list[i]=list[j] list[j]=tmp if __name__=='__main__': list1=[] for i in range(500): list1.append(random.randrange(1000)) print(list1) start_time=time.time() select_sort(list1) end_time=time.time() print(list1) print("Cost time:"
,end_time-start_time)
顯然,選擇排序與氣泡排序的時間複雜度是一樣的,因為都是兩個for迴圈,都為o(n^2). 效率不高。