原创 插值查找C++

#include <bits/stdc++.h> using namespace std; int binary_search(int* A, int n, int key) { int left = 0, right =

原创 Floyd算法

原文鏈接:https://www.cnblogs.com/wangyuliang/p/9216365.html 暑假,小哼準備去一些城市旅遊。有些城市之間有公路,有些城市之間則沒有,如下

原创 1. 兩數之和

給定一個整數數組 nums 和一個目標值 target,請你在該數組中找出和爲目標值的那 兩個 整數,並返回他們的數組下標。 你可以假設每種輸入只會對應一個答案。但是,你不能重複利用這個數組中同樣的元素。 示例: 給定 nums

原创 Lua中pairs()和ipairs()的區別

pairs() 遍歷table中所有的值,中途遇到nil跳過,直到遍歷至最後一個值。 a={1,nil,2}; for k,v in pairs(a) do print(v); end 輸出 1 2 ipairs() 遍歷t

原创 不使用第三個數交換兩個數

法1: 使用異或 #include<bits/stdc++.h> using namespace std; int main(void) { int a=9,b=5; a^=b; b^=a; a^=b; cout<

原创 順序存儲和鏈式存儲的優缺點

順序存儲 優點 存儲單元是連續的,存儲空間利用率高 無需爲了存儲各單位之間的關係添加額外開銷 可以按照索引隨機訪問 缺點 插入、刪除操作時,操作的位置越靠近頭部效率越低 需要預先分配足夠大的空間,這樣就存在不妥:空間過小則溢

原创 C++虛基類

虛基類存在的意義 先來看一段代碼 #include<bits/stdc++.h> using namespace std; class A { public: void fun() { cout << "A"; }

原创 Lua中的具名實參(named arguments)

什麼是具名實參 顧名思義 具有名字的實參 具名實參的存在意義 當一個函數有很多參數的時候,有時很難記住參數的名字和順序以及哪些參數是可賦值的。這裏就可以通過table在調用這類函數的時候通過名字來給參數賦值從而擺脫參數順序的束縛。

原创 LRU(Least Recently Used)緩存淘汰策略算法

LRU LRU(Least Recently Used,最近最少使用)算法根據數據的歷史訪問記錄來進行淘汰數據,其核心思想是“如果數據最近被訪問過,那麼將來被訪問的機率也更高”。 最常見的實現是使用一個鏈表保存緩存數據,詳細算法實

原创 Sunday算法

Sunday算法的思想跟BM算法很相似,不過Sunday採用模式匹配的思想,在匹配失敗的時候關注的是主串中參加匹配的最末尾字符的下一位字符。 平均性能的時間複雜度爲O(n) 最差情況的時間複雜度爲O(n * m) #include

原创 KMP算法

KMP算法是改進的字符串匹配算法,時間複雜度爲O(m+n) #include<bits/stdc++.h> using namespace std; static int ne[100];//這個數組中盛放的是匹配字符串的ne

原创 BM算法

BM是一種快於KMP的字符串匹配算法,屬於啓發式搜索 #include<bits/stdc++.h> using namespace std; int Dist(char* t, char ch) { int len = s

原创 Prim算法

原文鏈接:https://blog.csdn.net/justinzengtm/article/details/82748556 Prim是一種最小生成樹算法 什麼是最小生成樹? 無迴路

原创 進程 線程間的通訊方式

進程間的通訊方式 管道( pipe):管道是一種半雙工的通信方式,數據只能單向流動,而且只能在具有親緣關係的進程間使用。進程的親緣關係通常是指父子進程關係。 有名管道 (namedpipe) : 有名管道也是半雙工的通信方式,但

原创 C++中重載和重寫的區別

重載 是指同一可訪問區內被聲明的幾個具有不同參數列(參數的類型,個數,順序不同)的同名函數,根據參數列表確定調用哪個函數,重載不關心函數返回類型。 #include<bits/stdc++.h> using namespace