最簡單的方法是進行數值判斷,但是**最少是使用linq ,效率比較高是使用 boyer-moore 演算法,下面就告訴大家幾個演算法的**
class
bytearrayrocks
for(
int i = start; i < source.length; i++
)yield
return i;}}
private
static
readonly
int[
] empty =
newint[0
];private
static
bool
ismatch
(byte
array,
int position,
byte
candidate)
for(
int i =
0; i < candidate.length; i++)}
return
true;}
private
static
bool
isemptylocate
(byte
array,
int start,
byte
candidate)
}
這是最簡單的方法,參見
這個方法的**最少
class
linqarraysearch}}
}
這是最快的方法
class
boyermoorehorspool
if(pattern ==
null
)long valuelength = source.longlength;
long patternlength = pattern.longlength;if(
(valuelength ==0)
||(patternlength ==0)
||(patternlength > valuelength)
)var badcharacters =
newlong
[256];
for(
var i =
0; i <
256; i++
)var lastpatternbyte = patternlength -1;
for(
long i =
0; i < lastpatternbyte; i++
)long index = start;
while
(index <= valuelength - patternlength)
} index +
= badcharacters[source[index + lastpatternbyte]];}}}
參見:
測試了三個方法的效能,請看下面
benchmarkdotnet=v0.10.14, os=windows 10.0.17134
intel core i7-6700 cpu 3.40ghz (skylake), 1 cpu, 8 logical and 4 physical cores
.net core sdk=2.1.202
[host] : .net core 2.0.9 (coreclr 4.6.26614.01, corefx 4.6.26614.01), 64bit ryujit
defaultjob : .net core 2.0.9 (coreclr 4.6.26614.01, corefx 4.6.26614.01), 64bit ryujit
method
mean
error
stddev
linq
13,332.8 us
251.782 us
466.694 us
bytearrayrocks
371.3 us
7.327 us
14.462 us
boyermoorehorspool
108.3 us
1.153 us
1.079 us
其他方法請看下面
使用不安全**的 boyer moore 演算法 c# high performance boyer moore byte array search algorithm
lucene 對搜尋結果進行排序
1 在indexsearcher類中包含了幾個可過載的search方法,有乙個對結果進行排序的search方法宣告為 search query,sort public classsortingexample private directory directory public sortingexam...
對json資料進行排序和搜尋
在使用ajax獲取資料時後台返回的大部分都是json資料,在進行程式開發時有時會需要直接對這些json資料在js程式中再進行一定的操作,如排序 搜尋等,而不是通過ajax請求由資料庫進行這些操作。今天我就教給大家如何使用陣列的方法來實現這些操作 假設json就是後台傳過來的json資料 var te...
php對多維陣列進行排序
data id 13,name arthur dent id 22,name ford prefect id 5,name trillian astra 對多維陣列進行排序,就是這麼簡單!沒錯,就上面一句話就解決問題了!try catch pdoexception e sql select comp...