思路:遍歷陣列,每一趟選擇最小的數(指標j),和前面(指標i)交換
templatevoid selectionsort(t arr, int n) swap(arr[i], arr[minindex]); }}對物件進行排序:struct student {string name;int score;bool operator
#實現方式一:def selectionsort(lst): for i in range(len(lst)): min_index = i for j in range(i + 1, len(lst)): if lst[j] < lst[min_index]: min_index = j lst[i], lst[min_index] = lst[min_index], lst[i] #實現方式二:def selectionsort2(lst): for i in range(len(lst)): min_index = lst.index(min(lst[i:])) lst[i], lst[min_index] = lst[min_index], lst[i]#對物件進行排序:class student: def __init__(self,name,score): self.name=name self.score=score def __lt__(self, other): return self.score
選擇排序為不穩定排序(如[6, 8, 6, 2],第一遍迴圈,第乙個6和2交換位置),時間複雜度為 o(n^2) 冒泡 選擇 插入三種排序
工作閒下來了,偶來學習下排序演算法的思想,適當的緩解下壓力,換個思考方式也很不錯的。氣泡排序 是一種簡單的排序演算法。它重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。這個演算法的名字由來是因為...
三種排序演算法(氣泡排序,選擇排序,插入排序)
1.氣泡排序 流程 在乙個陣列中,第1個數與第2個數比,第2個數與第3個數比,第3數與第4個數比,若前面比後面大,則將兩個位置的數互換。因此,每次會將最大值推向最右邊,即座標索引為n 1處。當n 1處的元素敲定後,則繼續從0位置處推,推至n 2處,如此反覆。n n 1 n 2.時間複雜度為o n2 ...
氣泡排序 選擇排序 插入排序三種基礎排序的比較
排序在計算機中是很基礎並且是十分重要的問題,但由於排序有可能非常耗時,所以它已經成為了電腦科學中廣泛研究的課題。對此僅僅討論一些簡單的排序演算法,氣泡排序,選擇排序,插入排序。對此只是自己學習的乙個記錄。例如 有一群公升高不盡相同的人站成一排,我們想要通過某種方法,將他們排成一列公升高有序的隊伍 例...