好演算法
❶ 怎樣學好演算法
演算法(Algorithm)是指解題方案的准確而完整的描述,是一系列解決問題的清晰指令,演算法代表著用系統的方法描述解決問題的策略機制。也就是說,能夠對一定規范的輸入,在有限時間內獲得所要求的輸出。如果一個演算法有缺陷,或不適合於某個問題,執行這個演算法將不會解決這個問題。不同的演算法可能用不同的時間、空間或效率來完成同樣的任務。一個演算法的優劣可以用空間復雜度與時間復雜度來衡量。演算法中的指令描述的是一個計算,當其運行時能從一個初始狀態和(可能為空的)初始輸入開始,經過一系列有限而清晰定義的狀態,最終產生輸出並停止於一個終態。一個狀態到另一個狀態的轉移不一定是確定的。隨機化演算法在內的一些演算法,包含了一些隨機輸入。形式化演算法的概念部分源自嘗試解決希爾伯特提出的判定問題,並在其後嘗試定義有效計算性或者有效方法中成形。這些嘗試包括庫爾特·哥德爾、Jacques Herbrand和斯蒂芬·科爾·克萊尼分別於1930年、1934年和1935年提出的遞歸函數,阿隆佐·邱奇於1936年提出的λ演算,1936年Emil Leon Post的Formulation 1和艾倫·圖靈1937年提出的圖靈機。即使在當前,依然常有直覺想法難以定義為形式化演算法的情況。同一問題可用不同演算法解決,而一個演算法的質量優劣將影響到演算法乃至程序的效率。演算法分析的目的在於選擇合適演算法和改進演算法。一個演算法的評價主要從時間復雜度和空間復雜度來考慮。
❷ 求好演算法
我試試:
#include "stdio.h"
#include "math.h"
#define N 300000
#define MIN -9999
int sum(int *a,int i,int j){
int s,m;
if((i-j)<=150000&&(i-j)>=-150000)
m=abs(i-j);
else if((i-j)>150000)
m=299999-abs(i-j);
return s=a[i]+a[j]+m;
}
main(){
int a[N],i,j,s,max=MIN;
for(i=0;i<N;i++)
for(j=0;j<N;j++){
s=sum(a,i,j);
if(max<s) max=s;
}
printf("The max is %d:\n" ,max);
getch();
}
❸ 構思巧妙的演算法一定是好演算法。為什麼錯
因為演算法的評價指標很多。好演算法包含多個方面
構思巧妙這個可能說的是演算法的執行效率很高,但可能空間復雜度高,也可能是犧牲了一定的正確性,
所以構思巧妙 不等於演算法一定好
❹ 尋找好演算法
int main()
{
int n1,nm,i,j,flag,count=0;
do{
printf("Input START and END=?");
scanf("%d%d",&n1,&nm); /*輸入求素數的范圍*/
}while(!(n1>0&&n1<nm)); /*輸入正確的范圍*/
printf("...........PRIME TABLE(%d--%d)............\n",n1,nm);
if(n1==1||n1==2) /*處理素數2*/
{
printf("%4d",2);
n1=3;count++;
}
for(i=n1;i<=nm;i++) /*判定指定范圍內的整數是否為素數*/
{
if(!(i%2))continue;
for(flag=1,j=3;flag&&j<i/2;j+=2)
/*判定能否被從3到整數的一半中的某一數所整除*/
if(!(i%j))flag=0; /*若能整除則不是素數*/
if(flag) printf(++count%15?"%4d":"%4d\n",i);
}
}
❺ C語言如何學習好演算法
如果你自己能想出怎麼做的話,表示你的演算法沒有問題。
不知道怎麼寫代碼是你對演算法的實現的問題。
建議你還是好好學一門語言的好。
❻ 如何學好演算法
摘要:演算法是程序員的基石,學好演算法,是每一個程序員的必修課。創新工場董事長兼首席執行官李開復在他的著作《演算法的力量》中如此評價演算法的重要性:「演算法是計算機科學領域最重要的基石之一,但卻受到了國內一些程序員的冷落。許多學生看到一些公司在招聘時要求的編程語言五花八門,就產生了一種誤解,認為學計算機就是學各種編程語言,或者認為,學習最新的語言、技術、標准就是最好的鋪路方法。
❼ 好演算法應考慮達到的目標
我覺得還有取捨的問題.
比如時間復雜度和空間復雜度有時是矛盾的。
就看是犧牲時間還是犧牲空間了,比如應用中時間復雜度要求高,就盡量完善時間復雜度。
這樣理論上看,可能不是最優演算法,但在應用中卻是最優的。
❽ 如何學好演算法
演算法是一個積累的過程,最現實的方法就是從題目中學演算法。http://acm.h.e.cn/ 這是一個比較牛逼的網站,我想學編程的人都知道,在裡面刷題目,然後看牛人的結題報告,最後做會了題目,演算法自然就掌握了。重在堅持~~
❾ 演算法應該怎麼分析怎麼學好演算法
大哥,你先解釋下什麼叫完數
❿ 怎麼樣學好演算法
您好。平時多畫一些流程圖,對於生活中的問題多思考,對於您感興趣的數學類的生活中的問題,嘗試用C語言或者JAVA語言編程~