基礎演算法 二

2021-09-27 22:12:05 字數 2015 閱讀 6474

因為整數的長度大於1e5所以利用輸入字串的方式,將大整數從字串轉移到陣列中

進行加減

#include

#include

using

namespace std;

vector<

int>

add(vector<

int>

&a,vector<

int>

&b)if

(t)c.

push_back

(t);

//加入最高位進製

與加法思路基本一致,但是要首先考慮ab大小問題以及減出來是否為負數的問題

包括最後去除掉c中多餘0

#include

#include

using

namespace std;

//a>=b return true

intcmp

(vector<

int>

&a,vector<

int>

&b)return

true;}

vector<

int>

sub(vector<

int>

&a,vector<

int>

&b)while

(c.size()

>

1&&c.

back()

==0)c.pop_back()

;//拿掉結果中多餘的0,,,如111-110=001把他變為1而不是001

}int

main()

else

高精度乘法

//高精度乘法

大數a乘以小數b

思路同加法一致

唯一需要注意的是高精度乘法是每一位與b整個相乘,而不是小學那種演算法

#include

#include

using

namespace std;

vector<

int>

mul(vector<

int>

&a,int b)

return c;

}int

main()

高精度除法

//高精度除法定義一餘數t,應注意與加減乘不同,除操作從最高位開始

並且存進去的向量c在最後應做倒序和去除字首0操作

#include

#include

#include

using

namespace std;

//引數分別是被除數,除數,餘數

vector<

int>

div(vector<

int>

&a,int b,

int&t)

reverse

(c.begin()

,c.end()

);//倒置c

while

(c.size()

>

1&&c.

back()

==0)c.pop_back()

;//除0

return c;

}int

main()

基礎演算法 二

1.氣泡排序 bubblesort 原理 依次比較相鄰的兩個數,將小數放在前面,大數放在後面。即在第一趟 首先比較第1個和第2個數,將小數放前,大數放後。然後比較第2個數和第3個數,將小數放前,大數放後,如此繼續,直至比較最後兩個數,將小數放前,大數放後。至此第一趟結束,將最大的數放到了最後。在第二...

基礎演算法回顧(二)

遞迴 遞迴是呼叫自己的函式 遞迴函式有基線條件和遞迴條件,決定結束和遞迴 遞迴呼叫會產生呼叫棧 棧有壓入和彈出兩種操作 呼叫鏈越長,呼叫棧就會越長,所占用的記憶體就多 尾遞迴可以解決呼叫棧過長的問題。快速排序 快速排序使用了分而治之的方法 分而治之 遞迴式問題解決方法 d c分而治之的原理 1.找出...

二 基礎查詢演算法

有兩種對列表內資料進行查詢的方法,順序查詢和二叉查詢。當資料項在列表內隨機排列的時候可以用順序查詢,當資料在列表內有序排列的時候則會用到二叉查詢。抄點書上原話 助於理解,哈哈。一 順序查詢 最常見的查詢型別就是從記錄集的開始出順次遍歷每條記錄,直到找到所要的記錄或者是達到資料集的末尾,這就是順序查詢...