插入 冒泡 選擇排序 區分O n 2

2021-10-25 05:39:49 字數 1017 閱讀 7080

這三個排序都是 n 方,然而我老是記錯他們之間的名字,到時候考研卷子上寫錯了就涼涼

謹以此部落格紀念我傻傻分不清楚他們的名字的歲月。

助記:從後向前插入,前面已有序

從前向後遍歷,假設當前遍歷的是第 i 個元素,那麼前 i-1個已經有序,然後再將當前這個與前面的元素倒著回去比較,直到遇到比第 i 個小的則停止

void

insertsort

(int arr,

int n)

arr[j]

=arr[0]

;}}

助記:交換逆序對,最小的數字通過很多次交換到前面,就像冒泡一樣

n-1 次從後向前遍歷,遇到逆序對就交換他們,這樣每一次從後向前的遍歷都能把最小的數送到前面適當的位置

增加flag標記後也許不一定要 n-1 次,當不發生交換時,序列就排好了

void

bubblesort

(int arr,

int n)}if

(flag==0)

return;}

}

助記:從前向後去選擇最小的數字,和當前位置交換

從前往後掃 n-1 次 ,假設當前是 第 i 次,前面已經排好序,從後面找到最小的值的位置,然後交換當前的值和最小的值

void

selectsort

(int arr,

int n)

int temp=arr[min]

; arr[min]

=arr[i]

; arr[i]

=temp;

}}

以上的**老長了。。。可以縮短,但是為了更好理解

最近,我在想乙個問題

考研的卷子上,到底是寫更容易看的懂的**好?還是寫更短的**好?

看得懂的**老長了,我怕卷子寫不下。

3種基礎排序演算法O N 2 冒泡 插入 選擇

常數時間的操作 乙個操作如果和資料量沒有關係,每次都是固定時間內完成的操作,叫做常數操作。時間複雜度為乙個演算法流程中,常數運算元量的指標。常用o big o 來表示。具體來說,在常數運算元量的表示式中只要高階項,不要低階項,也不要高階項的係數,剩下的部分記為f n 那麼時間複雜度為o f n 評價...

選擇 插入 氣泡排序

選擇 插入 氣泡排序 說明 選擇排序 selection sort 插入排序 insertion sort 與氣泡排序 bubble sort 這三個排序方式是初學排序所必須知道的三個基本排序方式,它們由於速度不快而不實用 平均與最快的時間複雜度都是o n2 然而它們排序的方式確是值得觀察與 的。解...

排序 冒泡 選擇 插入

三種簡單排序 時間複雜度 o n 空間複雜度 o 1 氣泡排序的基本思想是通過比較兩個相鄰的記錄之間的比較和交換,使關鍵碼比較小的繼續逐漸從底部移向頂部 上公升 關鍵碼比較大的逐漸從頂部移向底部 沉底 冒泡由此得名。演算法思想 設有a 1 a n 的n個資料,氣泡排序的過程可以描述為 1 首先將相鄰...