哨兵的妙用

2021-10-19 07:37:31 字數 809 閱讀 1354

在做一些演算法的時候,可以利用哨兵幫我們解決一些涉及邊界的問題,可能可以優化演算法,簡化處理邏輯。

舉乙個歸併中合併的例子:

如果不使用哨兵需要判斷是否遍歷完兩段子陣列

//歸併merge

public

void

merge

(int

a,int head,

int mid,

int tail)

else

}//判斷是否還有剩餘元素未遍歷

int start=i;

int end=mid;

if(j<=tail-1)

while

(start<=end)

for(

int o=

0;o<=tail-head;o++

)}

//使用哨兵

public

void

merge2

(int

a,int head,

int mid,

int tail)

for(

int j=

0;j)//核心處理邏輯

for(

int k=

0,m=

0,n=

0;k)else

} system.out.

println

(a);

}

public

class

main

}

排序中的哨兵

直接插入排序演算法 1 演算法描述 void lnsertsort seqlist r while r 0 key 當r i key r j key時終止 r j 1 r 0 r i 插入到正確的位置上 endif insertsort 2 哨兵的作用 演算法中引進的附加記錄r 0 稱監視哨或哨兵 ...

Redis的哨兵機制

在主從集群模式下,如果從庫發生故障,客戶端可以繼續向主庫或其他從庫傳送請求,進行相關操作,但是如果主庫發生故障,就會直接影響從庫同步,如果客戶端傳送的是讀操作,還可以由其他從庫繼續服務,但是一旦有寫操作,就沒有例項來服務客戶端的寫請求操作了。如果主庫掛了,就需要執行乙個新主庫,比如把乙個從庫切換為主...

this指標的妙用

每個物件都可以通過this指標訪問自己的位址 物件的this指標不是物件自身的一部分,也就是說,this指標占用的記憶體大小不會反映在對物件進行sizeof運算子得到的結果中 this指標作為乙個隱式的引數傳遞給物件的每個非static成員函式 物件隱式地使用this指標或者顯式地使用this指標,...