資料結構學習第九天

2022-04-11 07:41:03 字數 1766 閱讀 8327

13:57:09 2019-08

學習16:56:35 2019-08-24

補充了插值查詢

排序演算法:起泡排序  歸併排序(二路歸併) 

1

#define _crt_secure_no_warnings //

vs中scanf為不安全的函式 要使用 得加上這句話

2 #include3 #include

4#define size 10

5int vector[size] = ;

6void swap(int i, int j) //

交換下表為i j的兩個元素712

//排序演算法

13//

起泡排序 最好o(n) 最壞o(n^2)

14/*

void bubblesort()

1526}27

if (!isswap)

28return;29}

30}*/31

//鄧公的寫法

32/*

int bubble(int lo, int hi)

3342}43

return isswap;44}

45void bubblesort(int lo,int hi)

46*/

49//

再改進50

int bubble(int lo, int

hi)5160}

61return lastposition; //

返回最後交換的位置62}

63void bubblesort(int lo, int

hi)64

6768

//歸併排序

//o(nlogn)

69//

二路歸併

70/*

void merge(int lo, int mi, int hi) //歸併

71; //棧上申請空間 存放排序後的向量元素

73int i = 0;

74int low = lo;

75int mid = mi;

76while (low77

83for (int i = lo; i < hi; i++) //將排好序的元素寫回

8487}*/

88//

鄧公的二路歸併做法

//當然 鄧公用的是c++ 這裡是c的實現方法

89void merge(int lo, int mi, int hi) //

o(n)

//鄧公的做法是只為左邊元素申請空間 對元素比對後的結果直接覆蓋原陣列

90 */

100//

簡化後 當j到了末尾 其實已經做完了 排序工作

101for (int i = 0, j = 0, k = 0; j < mi - lo /*

|| k < hi - mi

*/;) //

i用於a j用於b k用於c

102106

free

(b);

107}

108109

void mergesort(int lo, int hi) //

排序 [lo,hi)

110117

118int

main()

119

view code

鄧公講的太好了   不能聽現場真遺憾

學習第九天

怎麼沒有題面?我怎麼知道?換個鏈結吧!向洛谷勢力低頭 我們畫一下這個小螞蟻走出來的圖形,我們就會發現,是乙個類似長城的形狀 這個題,求最大值,我們應該能很容易想到用動態規劃 那麼對於乙個路徑圍成的圖形,我們需要描述的是它的位置和形狀,所以這顯然是個高維的dp 位置很好描述,但是形狀太複雜了,我們怎麼...

學習資料結構的第九天(三)

接下來就看一下 l樹是怎麼進行旋轉,怎麼進行遍歷等操作的。為什麼都是 多了兩層,而不會有 多了三層,多了四層這些操作呢?因為的話造成不平衡 是插入或者刪除或者之類的。在那個臨界點,就把它解決成了平衡。之後每次出現兩層的時候,都進行處理 就不會有三層 四層的 情況 我能理解這裡的四種情況,但是我思考的...

python學習 第九天

在下這廂有禮了 爬蟲簡單實現 coding utf 8 import urllib def gethtml url page urllib.urlopen url html page.read returnhtml html gethtml print html l urllib 模組提供了讀取we...