氣泡排序 選擇排序 插入排序演算法及時間複雜度詳解

2021-10-09 23:12:03 字數 2411 閱讀 1550

流程

把0到n個元素中的最大值放在n位置

把0到n-1個元素中的最大值放在n-1位置

把0到n-2個元素中的最大值放在n-2位置

… …

時間複雜度:嚴格的o(n2)的演算法(即使資料已經排好序,還要全部按照程式流程比較、交換一遍,所以稱為嚴格o(n2))

**

#氣泡排序演算法

defbubbling_sort

(lst):if

len(lst)==0

orlen

(lst)

<2:

return

for i in

range(1

,len

(lst)):

j = i-

1while j>=

0and lst[j]

> lst[j+1]

: swap(lst,j,j+1)

j = j-

1def

swap

(lst,a,b)

: c = lst[a]

lst[a]

= lst[b]

lst[b]

= c'''

隨機產生0~10000之間的100個數進行排序

演算法執行兩百次耗時的平均值為:0.0085s

'''

流程

找出第0到n個元素中的最小值放在0位置

找出第1到n個元素中的最小值放在1位置

找出第2到n個元素中的最小值放在2位置

… …

時間複雜度:嚴格的o(n2)

**

def

selection_sort

(lst)

:for i in

range

(len

(lst)-1

):min_index = i

for j in

range

(i+1

,len

(lst)):

if lst[j]

: min_index = j

swap(lst,i,min_index)

defswap

(lst,a,b)

: c = lst[a]

lst[a]

= lst[b]

lst[b]

= c'''

隨機產生0~10000之間的100個數進行排序

演算法執行兩百次耗時的平均值為0.01s

'''

流程

首先比較1位置數和0位置數,若1位置數小於0位置數則交換。到此前兩個數已經排好了。

3位置數和2位置數比較,若小則交換,若交換到2位置則和1位置數比較,小則交換。到此前三個數已經排好。

4位置數和3位置數比較,小則交換,若交換到3位置則和2位置比較,小則交換,若交換到2位置則和1位置數比較,小則交換,到此前4個數已經排好。

依次類推,像撲克牌一樣,把新的牌插入到前面已經排好序的牌當中,使得前面的全比它小,後面的全比它大。按照此方式,直到最後乙個數。

時間複雜度:o(n)~o(n2) 之間,若是乙個已經排好序的資料列表,那麼只需要兩個相鄰的資料進行比較,並不需要交換,所以複雜度為o(n),若是乙個完全逆序的資料列表,那麼每個位置的資料都需要和前面的全部數逐個進行交換,因此複雜度為o(n2)。所以複雜度在o(n)~o(n2) 之間,受資料排序情況的影響。

**

def

insertion_sort

(lst):if

len(lst)==0

orlen

(lst)

<2:

return

for i in

range(1

,len

(lst)):

j = i-

1while j>=

0and lst[j]

> lst[j+1]

: swap(lst,j,j+1)

j = j-

1def

swap

(lst,a,b)

: c = lst[a]

lst[a]

= lst[b]

lst[b]

= c'''

隨機產生0~10000之間的100個數進行排序

演算法執行兩百次耗時的平均值為0.0003s

'''

《演算法》選擇排序 插入排序 氣泡排序

選擇排序,演算法 p156 package algorithm public class selection p156 for int i 0 i n i public static void main string args test.sort a 思路 將第乙個元素與剩餘所有元素相比,如果有比第...

排序演算法 氣泡排序 選擇排序 插入排序

氣泡排序演算法 氣泡排序是最簡單的排序演算法之一。此演算法具有二次方程增長階,因此僅適合排序小列表。氣泡排序演算法是階o n 2 的演算法 package com.szy.structure.sort public class bubblesort system.out.println 排序前 fo...

排序演算法 氣泡排序 插入排序 選擇排序

2 穩定性 2.氣泡排序 3.插入排序 4.選擇排序 5.總結 對於演算法,我們首先考慮的就是其時間複雜度和空間複雜度。1 時間複雜度 另外,由於序列順序不一定,不同情況下的時間複雜度也不同,所以我們還要考慮最好情況和最壞情況。2 空間複雜度 這裡引入了乙個新的概念,我們把o 1 的空間複雜度的排序...