雙指標(下標)的應用
演算法與語言無關,指標是 C 語言的範疇
- 雙下標 ⇒ 指向雙陣列(可見兩個陣列遍歷並不同步),也可指向單獨的陣列(指向不同的起點,或者變化不一致),
1. 樸素字串匹配
def naive_matching(t, p):
m, n = len(t), len(p)
i, j = 0, 0
while i < m and j < n:
if t[i] == p[j]:
i, j = i + 1, j + 1
else:
i, j = i-j+1, 0
if j == n:
return i-j+1
else:
return -1
- i, j ⇒ 雙下標
- t, p ⇒ 主串,子串
- 關鍵在於本次匹配不成功時,指向子串的指標 j 重新指向子串的開始部分,而指向主串的指標 i,則要後退 j-1,也即 i ⇒ i-j+1
2. 快排
- 也是雙指標機制:
- 一個指標用於遍歷陣列,找出比主元小的元素
- 一個指標用於
int partition(int data[], int n, int s, int e){
if (!data || n <= 0 || s < 0 || e > n) {
throw exception("Bad Exception!");
}
int i = rand()%(e-s) + s;
swap(&data[i], data[e]);
int toSwap = s - 1;
for ( i = s; i < e; ++i ) {
if (data[i] < data[e]) {
++toSwap;
if (toSwap != i) {
swap (&data[i], &data[toSwap]);
}
}
}
++toSwap;
swap(&data[e], &data[toSwap]);
}
相關文章
- 雙指標指標
- 雙指標法指標
- 雙指標法相關的題指標
- 指標+AI:邁向智慧化,讓指標應用更高效指標AI
- 演算法-雙指標演算法指標
- 資料標籤與指標在金融行業的應用指標行業
- 滑動視窗與雙指標指標
- 雙指標維護筆記指標筆記
- NULL 指標、零指標、野指標Null指標
- 力扣之迴文數(雙指標中的對撞指標公式模板)力扣指標公式
- 雙指標相關演算法指標演算法
- 6.12.雙指標專題指標
- 雙指標習題:Kalindrome Array指標
- 雙指標妙解三數之和指標
- 野指標 空指標指標
- beta版 tomcat 應用監控指標Tomcat指標
- C語言指標應用程式設計C語言指標程式設計
- Go高階特性 12 | 指標詳解:在什麼情況下應該使用指標?Go指標
- 指標常量和常量指標指標
- 圖解兩數之和:雙指標法圖解指標
- C++ 用智慧指標這樣包裝 this 指標是否可行C++指標
- C語言指標(三):陣列指標和字串指標C語言指標陣列字串
- 陣列指標,指標陣列陣列指標
- ARC中強指標與弱指標指標
- 控制指標與統計指標指標
- 陣列指標 指標陣列陣列指標
- 指標問題的一點體會(區別 [指向指標的指標] 與 [指標的指標] .) (轉)指標
- Go 陣列指標(指向陣列的指標)Go陣列指標
- 指向常量資料的指標和常量指標指標
- 指標指標
- 關於指標傳遞和指標的指標指標
- 指標陣列與陣列指標指標陣列
- 詳解 常量指標和指標常量指標
- 陣列指標和指標陣列陣列指標
- 指標函式 和 函式指標指標函式
- 指向const物件的指標 和 const指標物件指標
- 指標圈選在資料應用平臺的實現指標
- 比如,一級指標、二級指標等,通過不同層級的指標資料指標