锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
杈撳嚭瀛愭暟緇勭殑鏈澶у拰鍚屾椂杈撳嚭瀛愭暟緇勪笅鏍囷紝鏃墮棿澶嶆潅搴︿負O(N)
婧愮爜錛?/p>
#include <iostream>
using namespace std;
//startPos 鏈澶у拰瀛愭暟緇勭殑璧峰浣嶇疆
//endPos 鏈澶у拰瀛愭暟緇勭殑緇撴潫浣嶇疆
int MaxSum(int *A,int n,int &startPos,int &endPos)

{
int tmpStart = 0;
int nStart = A[0];
int nAll = A[0];
for (int i=1;i<n;i++)
{
if(nStart < 0)
{
nStart =0;
startPos = i;
}
nStart += A[i];
if (nStart>nAll)
{
nAll = nStart;
endPos =i;
tmpStart = startPos;
}
}
startPos = tmpStart;
return nAll;
}
int main()

{
int arr[11] =
{-2,5,6,-6,4,-8,6,3,-1,2,-9};
int startP = 0,endP = 0;
int maxsubArrSumValue =0;
maxsubArrSumValue = MaxSum(arr,11,startP,endP);
cout<<maxsubArrSumValue<<endl<<startP+1<<endl<<endP+1<<endl;
system("pause");
return 0;
}
]]>
浠g爜錛?br>
bool prime (int num)

{
if (num == 2 || num == 3 || num == 5)
return true;
if (num % 2 == 0 || num % 3 == 0 || num % 5 == 0 || num == 1)
return false;
unsigned long c = 7;
int maxc = int (sqrt (num));
while (c <= maxc)
{
if (num % c == 0)
return false;
c += 4;
if (num % c == 0)
return false;
c += 2;
if (num % c == 0)
return false;
c += 4;
if (num % c == 0)
return false;
c += 2;
if (num % c == 0)
return false;
c += 4;
if (num % c == 0)
return false;
c += 6;
if (num % c == 0)
return false;
c += 2;
if (num % c == 0)
return false;
c += 6;
}
return true;
}
鍒嗘瀽錛?br>銆銆鐩稿浜巗qrt(n)嬈¢櫎錛屼笂闈㈢殑紼嬪簭闇瑕乻qrt(n)*8/30嬈¢櫎錛屾晥鐜囨彁鍗囦簡15/4鍊嶃?br>銆銆鑷劧鏁皀錛屾垜浠亣璁懼皬浜巒鐨勭礌鏁版暟F(n),F(n)鐨勫垎甯冭寰嬩負錛氬綋n瓚嬪悜浜庢棤絀峰ぇ鏃訛紝F(n)/(x/logx) = 1;
鎵浠ワ紝鍔ㄦ佺殑鍐椾綑搴﹁繎浼間負錛?sqrt(n)*4/15-x/logx)/sqrt(n)*4/15
鍏朵粬鏇村ソ鐨勫垽鏂礌鏁扮殑綆楁硶錛屽笇鏈涗綘鑳界粰鎴戠暀璦鎴栬呭啓鍦ㄨ瘎璁轟笂錛岃阿璋紒
]]>
unsigned long sTime,eTime;
double dTime;
sTime = click();
/**////TODO
eTime = click();
dTime = (double)(eTime-sTime)/CLOCKS_PER_SEC;
鍦↖ntel Pentium浠ヤ笂綰у埆鐨凜PU涓紝鏈変竴涓О涓?#8220;鏃墮棿鎴籌紙Time Stamp錛?#8221;鐨勯儴浠訛紝瀹冧互64浣嶆棤絎﹀彿鏁村瀷鏁扮殑鏍煎紡錛岃褰曚簡鑷狢PU涓婄數浠ユ潵鎵緇忚繃鐨勬椂閽熷懆鏈熸暟銆傜敱浜庣洰鍓嶇殑CPU涓婚閮介潪甯擱珮(1GHz = 109)錛屽洜姝よ繖涓儴浠跺彲浠ヨ揪鍒扮撼縐掔駭(涓縐掔殑10浜垮垎涔嬩竴錛屽嵆絳変簬10鐨勮礋9嬈℃柟縐?/font>)鐨勮鏃剁簿搴︺傝繖涓簿紜ф槸涓婅堪鏂規硶鎵鏃犳硶姣旀嫙鐨勩傚湪Pentium浠ヤ笂鐨凜PU涓紝鎻愪緵浜嗕竴鏉℃満鍣ㄦ寚浠DTSC錛圧ead Time Stamp Counter錛夋潵璇誨彇榪欎釜鏃墮棿鎴崇殑鏁板瓧錛屽茍灝嗗叾淇濆瓨鍦‥DX:EAX瀵勫瓨鍣ㄥ涓傜敱浜嶦DX:EAX瀵勫瓨鍣ㄥ鎭板ソ鏄疻in32騫沖彴涓婥++璇█淇濆瓨鍑芥暟榪斿洖鍊肩殑瀵勫瓨鍣紝鎵浠ユ垜浠彲浠ユ妸榪欐潯鎸囦護錛屽祵鍏ユ眹緙栦唬鐮佺殑鏂瑰紡錛岀湅鎴愭槸涓涓櫘閫氱殑鍑芥暟璋冪敤銆傚儚榪欐牱錛?nbsp;
inline unsigned __int64 GetCycleCount() 
{
__asm RDTSC
}
inline unsigned __int64 GetCycleCount() 
{
__asm _emit 0x0F
__asm _emit 0x31
}
#include <iostream>
#include <Windows.h>
using namespace std;
inline unsigned __int64 GetCycleCount() 

{
__asm _emit 0x0F
__asm _emit 0x31
}
int main()

{
unsigned long t;
t = (unsigned long)GetCycleCount();
Sleep(1000);
t = (unsigned long)GetCycleCount() - t;
cout<<"鏃墮棿錛?/span>"<<t<<endl;
system("pause");
return 0;
}
鎵浠ヨ緭鍑虹粨鏋滐細
鏃墮棿錛?995027270
紼嬪簭鎵鑺辨椂闂寸鏁?nbsp; = RDTSC璇誨嚭鐨勫懆鏈熸暟T1-RDTSC璇誨嚭鍛ㄦ湡鏁癟2 / CPU涓婚閫熺巼錛圚z錛?br>緙虹偣錛?br> 1.鏁版嵁鎶栧姩姣旇緝鍘夊錛屾瘡嬈℃祴寰楃粨鏋滈兘涓嶄竴鏍鳳紝娉㈠姩騫呭害涓婄櫨鐢氳嚦涓婂崈
2.鍦ㄥ鏍鎬笅涓嶅噯紜垨涓嶅彲鐢紝鏈変互涓嬪嚑涓柟闈㈢殑鍘熷洜[2]錛?br> a.涓や釜CPU鏍哥殑鍐呴儴璁℃暟鍣ㄤ笉鍚屾銆傚鏋滅▼搴忎袱嬈¤鍙栬繖涓鏁板櫒鐨勬椂鍊欐伆濂借杞崲鍒頒笉鍚岀殑鏍鎬笂錛岄偅涔堢敤鏉ヨ鏃跺氨浼氭湁姣旇緝澶х殑璇樊銆?br> b.CPU 鐨勬椂閽熼鐜囧彲鑳藉彉鍖栵紝渚嬪絎旇鏈數鑴戠殑鑺傝兘鍔熻兘錛?br> c.涔卞簭鎵ц瀵艱嚧 RDTSC 嫻嬪緱鐨勫懆鏈熸暟涓嶅噯錛岃繖涓棶棰樹粠 Pentium Pro 鏃朵唬灝卞瓨鍦ㄣ?br>瑙e喅鏂規硶[3]錛氬彲浠ラ噰鐢ㄨ瀹氱嚎紼嬩翰鏍告х殑鏂規硶銆傚嚱鏁癝etThreadAffinityMask鍙互鎸囧畾鏌愮嚎紼嬪彧鍦ㄦ煇浜涙牳涓婅繍琛岋紙鐢辯浜屼釜鍙傛暟璁懼畾錛屾瘡涓綅浠h〃涓涓牳錛夈備緥濡傦紝鍦ㄩ渶瑕佽皟鐢≧DTSC鐨勯偅涓嚎紼嬮噷鎵цSetThreadAffinityMask(GetCurrentThread(), 0x00000001);灝辮兘淇濊瘉璇ョ嚎紼嬪彧鍦ㄧ涓涓牳涓婅繍琛岋紝涓嶄細鍥犱負涓や釜鏍哥殑RDTSC璁℃暟鍣ㄤ笉鍚屾鑰岄犳垚璁℃椂璇樊銆傛垜鍦╳indows7鍜孷S2005涓嬫祴璇曪紝嫻嬪嚭鐨勬暟鎹拰鎴慍PU涓婚涓嶇錛屾垜涓搴︽鐤戝垰涔扮殑絎旇鏈槸涓嶆槸琚埛灞忎簡錛屽悗鏉ヨ繕鎵句簡鍏朵粬鐨勪竴浜涙祴CPU鐨勫伐鍏鳳紝姣斿CPU-Z錛岃繖涓棶棰樿繕娌¤В鍐熾?br>3.浣跨敤QueryPerformanceCounter鏌ヨ鍑芥暟鏂規硶
榪欎釜鏂規硶鍦ㄥ鏍鎬笅鐓у父鏈夋晥錛孮ueryPerformanceFrequency()鍙傛暟鍙拰涓繪澘涓婄殑楂樼簿搴﹀畾鏃跺櫒鐨勬櫠鎸鐜囩浉鍏?br>鍦ㄩ潰鐨勪緥瀛愭槸涓ょ姹傚鉤鏂規牴鐨勭畻娉曠殑鎬ц兘姣旇緝錛屼竴縐嶉噰鐢ㄥ簱鍑芥暟鐨剆qrt(),鍙︿竴縐嶆柟娉曟槸銆婄紪紼嬬彔鐜戙嬩笂浠嬬粛鐨勭墰欏胯凱浠f硶姹傚鉤鏂規牴錛屽師鐞嗙被浼間簬浜屽垎鏌ユ壘錛屼絾鏄墰欏胯凱浠f硶鏀舵暃閫熷害鐩告瘮蹇緢澶氥?br>
#include <iostream>
#include <cmath>
using namespace std;
int main()

{
//a寰呰緭鍏ョ殑寮騫蟲柟鏍規暟
//x 閫夊彇鐨剎0鐐?br>
//y 姣忔榪唬鐨勪腑闂村?/span>
double a, x,y;
unsigned long start,endt;
cin>>a;
LARGE_INTEGER t1,t2,tc;
QueryPerformanceFrequency(&tc);
printf("Frequency:%u\n",tc.QuadPart);
QueryPerformanceCounter(&t1);
if (a<0)
cout<<"璐熸暟娌℃湁騫蟲柟鏍癸紒"<<endl;
else
{
x = 1;
y = (x+a/x)/2;
while (x!=y)
{
x = y;
y = (x+a/x)/2;
}
}
QueryPerformanceCounter(&t2);
//鐗涢】榪唬娉曟眰騫蟲柟鏍規墍闇鏃墮棿;
printf("Lasting Time:%u\n",(t2.QuadPart-t1.QuadPart));
//duration = (double)(finish - start)/CLOCKS_PER_SEC ;
cout <<a<<"鐨勫鉤鏂規牴涓猴細"<<x<<endl;
QueryPerformanceCounter(&t1);
sqrt(a);
QueryPerformanceCounter(&t2);
//math.h搴撳嚱鏁皊qrt姹傚鉤鏂規牴鎵闇鏃墮棿;
printf("Lasting Time:%u\n",(t2.QuadPart-t1.QuadPart));
cout<<a<<"鐨勫鉤鏂規牴涓猴細"<<sqrt(a)<<endl;
system("pause");
return 0;
涓ょ姹傚鉤鏂規牴鎵闇鏃墮棿瀵規瘮濡備笅錛?br>
鍦ㄥ浘褰㈠涓眰騫蟲柟鏍逛嬌鐢ㄩ鐜囬潪甯擱珮錛屽挨鍏舵槸鍦ㄧ瑙︽嫻嬩腑錛屽敖閲忔彁楂樻眰騫蟲柟鏍圭殑鏁堢巼鏄潪甯告湁蹇呰鐨勩?br>鎬葷粨錛氭晥鐜囧氨鏄敓鍛斤紝鍦ㄥ鉤鏃剁殑欏圭洰寮鍙戜腑灝介噺鍋氬埌綆鍗曪紝綆鍗曚唬琛ㄩ珮鏁堛傝繖鏄嫻嬮珮鏁堢殑絎竴姝ャ?br>寮曠敤錛?br>[1]:http://zhidao.baidu.com/question/41853032.html
[2]:http://blog.csdn.net/Solstice/archive/2010/01/16/5196544.aspx
[3]:http://blog.21ic.com/user1/5184/archives/2009/65439.html
]]>