1.氣泡排序
原理有一列資料,從第乙個數開始,第乙個和第二個進行比較,如果第乙個大就交換,如果第二個大就不變,再第二個和第三個比較,一次類推,第二輪是從第乙個數開始比到倒數第二個數,第三輪是從第乙個數比到倒數第三個數.以此類推.
**
def bubble(nums):
for j in range(len(nums)-1,0,-1): # 7,6,5,4,3,2,1
for i in range(j):
if nums[i]>nums[i+1]:
nums[i],nums[i+1]=nums[i+1],nums[i]
return nums
nums=[2,5,6,3,4,9,1]
print(bubble(nums))
解析
內層迴圈表示比較的範圍,外層迴圈用來表示比較的輪數
2.選擇排序
原理在未排序的列表中,找出乙個最大(小)值,通常找的最大值或者最小值就是列表的第乙個元素位置
然後在未排序的列表中依次找出最大(小)元素位置,
跟假設的位置進行比較,如果原有位置與找到的最大(小)位置發生改變
則進行交換
**def select(nums):
for i in range(0,len(nums)):
for j in range(i):
if nums[i]解釋
內層迴圈表示每一輪的第乙個數和後面的數依次進行比較,外層迴圈用來實現內層迴圈開始的第乙個數.
3.插入排序
原理通過構建有序序列,對於未排序資料,在已排序序列中從後向前掃瞄,找到相應位置並插入。插入排序在實現上,在從後向前掃瞄過程中,需要反覆把已排序元素逐步向後挪位,為最新元素提供插入空間。
**實現
def insert(nums):
for i in range(1,len(nums)):
for j in range(0,i):
if nums[i]解釋
從第n個數和前n-1個數依次進行比較,外層用來表示從第乙個數到第n-1個數,內層用來表示前n-1個數.
4.快速排序
原理從數列中挑出乙個元素,稱為"基準";
重新排序數列,所有元素比基準值小的擺放在基準前面,所有元素比基準值大的擺在基準的後面;在這個分割槽結束之後,該基準就處於數列的中間位置;
遞迴地(recursive)把小於基準值元素的子數列和大於基準值元素的子數列排序。
基礎演算法 排序演算法
話不多說,上 include include include include include define n 10000500 long long beg intcnt,n void show time void swap int a,int b 稱這兩個函式為比較函式,函式名即相當於指標,將其寫...
基礎演算法 快速排序演算法
時間複雜度 最壞的情況和氣泡排序一樣,為o n 2 平均的時間複雜度 nlog n 基本思想 1 取最左邊的數作為標準 2 從右邊開始查詢,找到從右邊數第乙個小於標準temp的數 3 從左邊繼續查詢,找到第乙個大於標準temp的數 4 將左右兩邊找到的數進行交換,如此往復,直到左邊和右邊碰到一起,即...
演算法 基礎 常見排序演算法
如果h位比flag小,則需要交換,在此處進行。if l 從l位開始,如果比flag小就將l向右移動,即l while l flag 如果l位比flag大,則需要交換,在此處進行 if l flag 一趟結束,判斷flag兩端的子陣列是否需要排序 if l low if h public static...