演算法基礎 排序演算法

2021-09-26 09:08:44 字數 1220 閱讀 8545

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...