-
統計算法
鎖定
在給定的範圍內求出符合設定條件的記錄個數。
- 中文名
- 統計算法
- 釋 義
- 給定範圍求出符合設定條件記錄
- 方 式
- 循環實現
- 特 點
- 條件語句判斷
統計算法基本思想
用一個條件語句判斷當前記錄是否符合給定條件,符合則統計個數加一。用循環實現對所有記錄的操作。
統計算法舉例説明
例一、從鍵盤敲進任意個(少於255個)字符,然後求出其中某一個字母的個數(如大寫字母A)。
programjjzx(input,output);
type
str=string[255];
var
st:str;
n,i,j:integer;
begin
writeln(‘請輸入一行字符:‘);
readln(st);
j:=lenth(st);{把字符串的實際長度賦給j}
n:=0;
fori:=1tojdo
iford(st[i])=65thenn:=n+1;
writeln(‘你輸入的字符是:‘,st);
writeln((‘其中字符A的個數和:‘,n)
end.
統計算法使用方法
1.使用<time.h>的clock()函數
模板程序:
#include<time.h>
#include<iostream>usingnamespacestd;intmain()
{
time_tt;
//一些初始化的東西
t=clock();//開始時候的GET,clock()函數用於獲得系統當前時間
//你需要計時的代碼,算法,語句等等
cout<<"Timeconsumed:"<<clock()-t<<endl;
//結束時候獲得差值
return0;
}
2.使用GetTickCount
這個和clock()相同,只是它比較標準,GetTickCount可以到18-20ms進度
3.彙編指令
前面的都是在MS級別逗留的計時,當我們需要統計一個語句使用時間的時候,我們通常經過多次循環來求總時間。
缺點:1)由於需要統計的語句耗時可能比循環需要的JMP,INC指令耗時還要少(尤其JMP指令很慢),所以統計並不精確,大多耗時為循環使用時間
所以我們能不能避免這些問題呢?可以使用
直接讀取CPU開機以來執行的機器週期數,一條彙編指令:RDTSC(就是ReaDTimeStampCount)精度可以達到ns級別。(準確地説精度是1/你的CPU的時鐘頻率,這也是極限)使用:longHighStart,LowStart,HighEnd,LowEnd;
longnumhigh,numlow;__asm//使用匯編混編
{
RDTSC
movHighStart,edx
movLowStart,eax
}
//此處放上你的算法或代碼,語句等等
__asm
{
RDTSC
movHighEnd,edx
movLowEnd,eax
//獲取兩次計數器值得差
subeax,LowStart
cmpeax,0
jgL1
negeax
jmpL2L1:movnumlow,eax
L2:sbbedx,HighStart
movnumhigh,edx
}unsignedlongtimer=(numhigh<<32)+numlow;//得出最終結果(單位時NS)
- 詞條統計
-
- 瀏覽次數:次
- 編輯次數:8次歷史版本
- 最近更新: 北辰以北1209