ACM 手動實現線性佇列

2021-07-25 10:04:03 字數 696 閱讀 6307

佇列的實現可以基於陣列實現,也可以基於單鏈表實現。

下面給出陣列實現,為防止佇列多次進行插入和刪除操作導致的前面的陣列空間被浪費,採用迴圈佇列的方式。

宣告乙個佇列類,這裡要注意maxn的大小,因為是迴圈佇列,所以不用太大。如果太大,類又是在main函式中定義的,就有可能導致棧溢位。

class queue

;

析構函式:

queue

::queue()

插入操作:

int  queue::push(int x)

}

取隊頭元素:

int queue

::pop()

}

相反數逆**

int queue::minus()

}

注意:因為相反數操作是對於每乙個元素的改變,因此時間複雜度為線性級o(n)

找最大元素:

int queue::max()

return maxnum;

}}

很顯然,這種找最大數的方案非常慢。快速差找最大數,可以有以下兩種方案:

1.採用乙個輔助棧記錄資訊。

2.用雙棧實現佇列。

手動實現線性回歸

我們自定義資料,使用torch實現線性回歸。假設我們的基礎模型是y wb c,其中,w,b均為引數 我們是用y 3x 0.8 來構造資料x,y 所以最後求出的w,b應該接近3,0.8.1.準備資料 2.計算 值 3.計算損失,把引數梯度設定為0,進行反向傳播。4.更新引數 import torch ...

手動實現線性回歸

找到 函式.y wx b x 找到目標函式 損失函式 最小二乘法.1 2m i 1 m yi y frac sum m y i hat 2m1 i 1 m yi y 使用梯度下降找到損失函式取的最小值的時候對應的係數.import numpy as np import pandas as pd im...

手動實現鏈式佇列

public class linkqueue 對頭 private entryfort 隊尾 private entryrear 佇列的長度 private int count public linkqueue 入隊操作採用尾插法 param val public void offer t val ...