乙個提高查詢速度的小技巧

2022-02-27 01:44:28 字數 1220 閱讀 8394

在乙個陣列中查詢某乙個元素,或是在乙個字串中查詢某個字元,我們一般都會寫出如下**。這樣的**雖然簡潔明瞭,但在陣列元素很多的情況下,並不是乙個很好的解決方案,今天我就來分享乙個提高查詢速度的小技巧.

//

在乙個int陣列中查詢某個元素

int find(int a,int n,int

element)

return -1;}

//在乙個字串中查詢某個字元

int find(string& str,char

c)

return -1

;}

雖然每次都是寫出這樣的**,但我總覺得for迴圈中的《判斷有點多餘,比如陣列中有100個元素,我們明明知道前99個是不會陣列越界的,根本不需要判斷i,昨天晚上看程式設計珠璣的時候發現了這個小技巧,今天就來分享一下。

通過哨兵的方式去掉這多餘的判斷,將上面兩個方法改造如下:

//

在乙個int陣列中查詢某個元素

int find1(int a,int n,int

element)

a[n] =hold;

return i < n ? i : -1; }

//在乙個字串中查詢某個字元

int find1(string& str,char

c) str[n] =hold;

return i < n ? i : -1

; }

我勒個去,怎麼變得這麼長,但的確是減少了判斷的次數,如果陣列較大的話提高執行速度肯定是一定的,如果你非要說陣列很小的話,說不定速度還要降低呢,那你不這樣寫不就得了,好了廢話少說,雖然**已經很簡單明瞭了,但我還是簡單說一下思路。

就是在陣列的末尾加乙個哨兵,即使不判斷i先判斷最後乙個元素的值是不是我們要查詢的數,如果是,返回其下標;如果不是,將最後乙個數的值儲存起來,將要查詢的那個數賦給最後乙個元素,迴圈查詢指定的元素,不用判斷陣列越界,if語句必然break,將最後乙個元素的值還原,最後只用判斷i最後在做乙個簡單的效能測試,看到底能否提高查詢速度。

測試**如下:

void

testfind()

執行結果如下:

速度還是會快一點

C C 中提高查詢速度的小技巧

前言 當看到題目是在乙個陣列中查詢某乙個元素,或是在乙個字串中查詢某個字元,我們一般都會寫出如下 但這樣的 雖然簡潔明瞭,但在陣列元素很多的情況下,並不是乙個很好的解決方案,今天我就來分享乙個提高查詢速度的小技巧.在乙個int陣列中查詢某個元素 int find int a,int n,int el...

提高網頁速度小技巧

網際網路頻寬越來越寬,似乎讓網頁的載入速度得到了質的飛躍。其實不然,因為隨著頻寬的提高,網頁上的物件也越來越多,因此加快網頁開啟速度還是乙個重要的課題。加快網頁的開啟速度,有三個路徑,一是提高網路頻寬,二是使用者在本機做優化,三是 設計者對網頁做一定的優化。這篇文章站在乙個 設計者的角度,分享一些優...

提高編碼速度的乙個辦法

一旦方案想清楚,剩餘部分的工作效率瓶頸就在於你的手速了。最近一直看起點中文網上的 師士傳說 主角葉重乙個強項就是手速。最基本的就是盲打。不會盲打的通常屬於 編碼低能兒 身邊也有不會盲打的朋友,他們通常都有乙個問題,就是眼高手低,說說還行,動手就不行。當然他們能夠在it研發領域還混得很好,是因為在其他...