在實際的專案開發中,if和switch同為條件語句,然而很多人並不清楚何時使用if語句,何時使用switch.switch…case結構中有跳轉表,輸入的字元只要經過一次比較就可以正確的找到跳轉分支,所以平均情況下跳轉次數為1.
if…else結構如果有n個分支,分別記為n0,n1,n2,n3,…n(i-1),每個分支出現的概率假設未pi,分別為p0,p1,p2,p3,…p(i-1)。執行第一分支前不需要跳轉,其它分支均需要跳轉,執行第二個分支之前需要跳轉一次,第三個分支需要跳轉兩次…需要跳轉平均跳轉的次數s為: \
如果》1,則此時if…case的效率是小於switch…case的,如果它的值小於1,此時if…else的效率高於switch…case。
假設if…else分支的每個分支出現的概率相同,即1/n,上面的跳轉次數的期望值可以改寫為:\。
如果n=3,則期望的跳轉次數為1,剛好與switch…case相同。由此,如果選擇分支大於3的時候,選用switch…case結構效率會更高一些,而小於3時,選用if…else結構更好。
總結:在選擇分支較多時,選用switch…case結構會提高程式的效率,但switch不足的地方在於只能處理字元或者數字型別的變數,if…else結構更加靈活一些,if…else結構可以用於判斷表示式是否成立,比如if(a+b>c),if…else的應用範圍更廣,switch…case結構在某些情況下可以替代if…else結構。
關於C 兩種排序
學習了選擇排序與氣泡排序後,以我目前的水平認為,選擇排序和氣泡排序的結果上,其實都是將整數型或浮點型的數排成有序數列的演算法,即將數從大到小或從小到大排列。但是,它們使數排成有序數列的過程,是有不同的,於是我就有個疑問,它們實現排序的效率有何不同呢。以下分別是是關於選擇排序與氣泡排序的 選擇排序 i...
關於兩種限流模式
流量預警和限流方案中,比較常用的有兩種。第一種滑窗模式,通過統計一段時間內的訪問次數來進行控制,訪問次數達到的某個峰值時進行限流。第二種為併發使用者數模式,通過控制最大併發使用者數,來達到流量控制的目的。下面來簡單分析下兩種的優缺點。1 滑窗模式 模式分析 在每次有訪問進來時,我們判斷前n個單位時間...
mongodb條件查詢的兩種方式
方法一 long systemtime system.currenttimemillis 1000 int endtime int systemtime int starttime int systemtime 600 log.info starttime endtime starttime,end...