選擇排序(python實現)

選擇排序,簡單的來說就是在一組無序的列表中,把這組列表中的數看作兩部分(一部分有序的,一部分無序的)。先遍歷一遍,找出最小的那個,然後把它放到最前面,接着再遍歷除了那個最小的數,在剩下的數中,再找出最小的數,放到第二位,依次循環,直到列表裏的數字全部排序完畢。

def select_sort(list):
	n = len(list)
	for i in range(n-1):  # 這層循環控制遍歷的次數,只要遍歷到倒數第二位就行了
		"""這是假設的最小值,只要和後面一次循環比,如果比他小的話,就交換位置,直到換出真正小的,然後放到排好序的位置上"""
		min_index = i  # 最小值索引,從0開始,然後和後面的沒有排序的比較就行了
		for j in range(i+1,n):  # 這層循環就是遍歷剩下的爲排序的,所以從i+1開始,也就是排好序的後面一位開始
			if list[min_index]  > list[j]:  # 如果發現後面無序的數字中,有比這個所謂的最小值還小的,則交換位置
				min_index = j
		list[min_index], list[j] = list[j], list[min_index]  # 遍歷完這一趟,得到的最小值,再交換位置
list = [5, 2, 3, 7, 9 ,0]
select_sort(list)
print(list)

選擇排序的最壞時間複雜度和最好時間複雜度都是O(n^2),因爲就算是排好序的列表,他也要一次一次比,比完了,放到排好序的位置上,所以最壞和最好都是一樣的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章