關於排序的一點點東西 1

2021-09-11 12:51:21 字數 1710 閱讀 1295

最近複習演算法的東西。於是在網上查詢相關資料,重新了解下幾種常見的排序演算法。(**中空白的地方,待了解到那裡來的時候再填上?)

時間複雜度和空間複雜度概念就不用解釋了,穩定性這個東西已經忘記是什麼了(演算法老師不要打我)。看看了資料,原來說的是:排序前兩個相等的資料在序列中的順序與排序後的順序相同。

簡單的說就是每次都去查詢陣列中最小的指放在最前面。看了下面這個**應該就一目了然了。 **

維基百科

**實現為

void

selectionsort

(int arr, int len)

}複製**

這個排序要進行2次迴圈,所以時間複雜度為o(n²),並沒有開闢新的儲存空間,所以空間複雜度為o(1)。這種排序是不穩定的,在交換的時候,有可能會更改2個相同資料的位置。比如[5(1),5(2),1]這樣乙個陣列。在進行遍歷的後就會變成[1,5(2),5(1)]第1個5就被交換到了第2個5的後面。

氣泡排序就是比較相鄰的兩個數,如果順序錯誤就交換一下。這樣就不停的把大的數往後面送,然後從陣列的末尾到頭部依次排好序。由於氣泡排序只是相鄰的兩個數相交換,所以這個排序演算法是穩定的。

void

bubblesort

(int arr,int len)}}

}複製**

舉個例子:

arr = [6, 1, 5, 3, 7] 第一次外迴圈

變化交換

(6 15 3 7 ) → (1 65 3 7 )

6 > 1 交換位置

( 16 53 7 ) → ( 15 63 7 )

6 > 5 交換位置

( 1 56 37 ) → ( 1 53 67 )

6 > 3 交換位置

( 1 5 36 7) → ( 1 5 36 7)

6 < 7 位置不變

第二次外迴圈(除開最後乙個元素8,對剩餘的序列)

變化交換

(1 53 6 7 ) → (1 53 6 7 )

1 < 5 位置不變

( 15 36 7 ) → ( 13 56 7 )

5 > 3 交換位置

( 1 35 67 ) → ( 1 35 67 )

5 < 6 位置不變

第三次外迴圈

變化交換

(1 35 6 7 ) → (1 35 6 7 )

1 < 3 不變

( 13 56 7 ) → ( 13 56 7 )

3 < 5 不變

第四次外迴圈(最後一次)

變化交換

(1 35 6 7 ) → (1 35 6 7 )

1 < 3 不變

下次再見...

關於排序的一點點東西 2

我們怎麼來實現乙個插入排序呢 從第乙個元素開始,該元素可以認為已經被排序 取出下乙個元素,在已經排序的元素序列中從後向前掃瞄 如果該元素 已排序 大於新元素,將該元素移到下一位置 重複步驟3,直到找到已排序的元素小於或者等於新元素的位置 將新元素插入到該位置後 重複步驟2 5 當然有圖就更直觀啦 維...

關於Lisp的一點點

以後寫的語言相關應該主要是ruby 也許還有少數的c 了,所以在這裡先記錄一點關於lisp的東西。首先是乙個小故事 在 ilc 2002 大會上前lisp大神,當今的python倡導者peter norvig,由於某些原因,做乙個類似於馬丁路德在梵蒂岡宣揚新教的主題演講,因為他在演講中大膽地聲稱py...

深度學習的一點點一點點知識

我們手裡有大量的x和y,求權重訓練的是權重資料樣本 xwy 身高0體重0 血型0.3 腳指頭0.8 一組x計算出對應的乙個y 計算過程是w 下面的就是最基礎的公式 我們已知資料是大量的x和y 希望通過 西塔 來獲得w 我們的學習才剛剛開始,首先需要理解的是與門 x1x2y0 0001 0100 11...