- 相關(guān)推薦
算法設(shè)計心得體會
當我們經(jīng)過反思,有了新的啟發(fā)時,就十分有必須要寫一篇心得體會,這樣能夠給人努力向前的動力。那么問題來了,應(yīng)該如何寫心得體會呢?以下是小編收集整理的算法設(shè)計心得體會,僅供參考,希望能夠幫助到大家。
算法設(shè)計心得體會 篇1
一、實驗內(nèi)容:
這學期的算法與設(shè)計課,老師布置了這四個問題,分別是貨郎擔問題,動態(tài)生成二維數(shù)組,對話框下拉列表,排序問題。
二、學習掌握:
基本程序描述:
。1)貨郎擔問題:貨郎擔問題屬于易于描述但難于解決的著名難題之一,至今世界上還有不少人在研究它。貨郎擔問題要從圖g的所有周游路線中求取具有最小成本的周游路線,而由始點出發(fā)的周游路線一共有(n一1)!條,即等于除始結(jié)點外的n一1個結(jié)點的排列數(shù),因此貨郎擔問題是一個排列問題。貨郎擔的程序?qū)崿F(xiàn)了利用窮舉法解決貨郎擔問題,可以在城市個數(shù)和各地費用給定的情況下利用窮舉法逐一計算出每一條路線的費用,并從中選出費用最小的路線。從而求出問題的解
(2)費用矩陣:費用矩陣的主要內(nèi)容是動態(tài)生成二維數(shù)組。首先由鍵盤輸入自然數(shù),費用矩陣的元素由隨機數(shù)產(chǎn)生,并取整,把生成的矩陣存放在二維數(shù)組中,最后把矩陣內(nèi)容輸出到文件和屏幕上。它采用分支界限法,分支限界法的基本思想是對包含具有約束條件的最優(yōu)化問題的所有可行解的解(數(shù)目有限)空間進行搜索。該算法在具體執(zhí)行時,把全部可行的解空間不斷分割為越來越小的子集,并為每個子集內(nèi)的解計算一個下界或上界。動態(tài)生成二維n*n的`數(shù)組程序利用指針表示數(shù)組的行和列,并逐一分配空間,在輸入n的數(shù)值后,系統(tǒng)自動分配空間,生成n*n的數(shù)組,并產(chǎn)生隨機數(shù)填充數(shù)組,最后將結(jié)果輸入到指定文件中。
(3)Mfc:在下拉列表框中添加內(nèi)容程序,在下拉列表對應(yīng)的函數(shù)中利用addstring添加需要的內(nèi)容。首先定義下拉列表框為ccombox型,并定義其屬性名,利用addstring函數(shù)可以任意添加需要的內(nèi)容。a排序問題:快速排序的運行時間與劃分是否對稱有關(guān),其最壞情況發(fā)生在劃分過程中產(chǎn)生的兩個區(qū)域分別包含n-1個元素和1個元素的時候。其算法的時間復(fù)雜度為O(n 2),在最好的情況下每次劃分的基準恰好為中值,可得其算法時間復(fù)雜度為O(n㏒n)。 算法的實現(xiàn)和理解和代碼實現(xiàn)完全是兩回事,想要完全掌握一種算法,需要動手實踐,用代碼實現(xiàn),才能理解透徹,真正掌握。b對話框下拉列表:這個項目簡單易懂,輕松實現(xiàn)。
三、疑問與總結(jié):
貨郎擔的問題,我認為窮舉法相對比而言是比較初級的方法,費時耗力,適合在練習時選用,但是在實際問題中不建議采用?唆斔箍柣蛘咂绽锬匪惴ㄇ笕∽钚∩蓸涞姆椒▉斫鉀Q貨郎擔的問題是更適合現(xiàn)實解決問題的。我認為程序可以用switch函數(shù)來將函數(shù)分成幾個部分更人性化,比如分為解決問題的的選項,輸出結(jié)果選項,退出程序選項等。再有就是費用矩陣的值可以從文件中讀取,而結(jié)果也可以直接放在指定文件中,這樣在實際應(yīng)用中比較廣泛。
動態(tài)生成二維數(shù)組的程序我認為如果按照規(guī)范性,我的方法是中規(guī)中矩的,畢竟再向下延伸,生成三維的數(shù)組,需要三層的指針來實現(xiàn)。但是就程序的簡化程度和計算機處理時間來說,我認為這樣雙層指針的算法有些太占用內(nèi)存,畢竟要給行和列各分配n個空間。我通過與同學的交流,我發(fā)現(xiàn)可以用1位數(shù)組來實現(xiàn)二維的n*n的數(shù)組。首先分配n*n的空間,
然后通過循環(huán)在一行的數(shù)據(jù)達到n時自動換行。這樣程序得到了一定的簡化,并且減少了一定的內(nèi)存使用。我認為這種方法是比較貼合實際的。
四、心得體會
在計算機軟件專業(yè)中,算法分析與設(shè)計是一門非常重要的課程,很多人為它如癡如醉。很多問題的解決,程序的編寫都要依賴它,在軟件還是面向過程的階段,就有程序=算法+數(shù)據(jù)結(jié)構(gòu)這個公式。算法的學習對于培養(yǎng)一個人的邏輯思維能力是有極大幫助的,它可以培養(yǎng)我們養(yǎng)成思考分析問題,解決問題的能力。
如果一個算法有缺陷,或不適合某個問題,執(zhí)行這個算法將不會解決這個問題。不同的算法可能用不同的時間、空間或效率來完成同樣的任務(wù)。一個算法的優(yōu)劣可以用空間復(fù)雜性和時間復(fù)雜度來衡量。算法可以使用自然語言、偽代碼、流程圖等多種不同的方法來描述。計算機系統(tǒng)中的操作系統(tǒng)、語言編譯系統(tǒng)、數(shù)據(jù)庫管理系統(tǒng)以及各種各樣的計算機應(yīng)用系統(tǒng)中的軟件,都必須使用具體的算法來實現(xiàn)。算法設(shè)計與分析是計算機科學與技術(shù)的一個核心問題。因此,學習算法無疑會增強自己的競爭力,提高自己的修為,為自己增彩。
算法設(shè)計心得體會 篇2
通過兩周的課程設(shè)計,完成了預(yù)定的目標,其中有很多的隨想。老師的題目發(fā)下來的很早,大概提前了3周,當時就著手搜索有關(guān)線索二叉樹的思想,思路,借了一本《數(shù)據(jù)結(jié)構(gòu)-c語言描述》,在大體上就有了一個輪廓,先是輸入二叉樹,在對二叉樹進行線索化,依次往下,但在具體實現(xiàn)時,遇到了很多問題:首先是思想的確定,其非常重要,以前有了這個想法,現(xiàn)在愈加清晰起來,因此,花了大量的時間在插入刪除的具體操作設(shè)計上,大概三個晚上的時間,對其中什么不清晰明確之處均加以推敲,效果是顯著的,在上機上相應(yīng)的節(jié)約了時間。
通過具體的實驗編碼,思路是對的,但是在小問題上摔了一次又一次,大部分時間都是花在這方面,這個節(jié)點沒傳過來啊之類的,以后應(yīng)該搞一個小冊子,記錄一些錯誤的集合,以避免再犯,思想與C語言聯(lián)系起來,才是我們所需要的,即常說的理論與實踐的'關(guān)系。
數(shù)據(jù)結(jié)構(gòu)是基礎(chǔ)的一門課,對于有過編程經(jīng)驗的人,結(jié)合自己的編程體會去悟它的思想;而且我覺得隨著編程經(jīng)歷的豐富對它的體會越深入,最初接觸是對一些思想可能只是生硬的記憶,隨著學習的深入逐漸領(lǐng)悟了很多。看了這次課程設(shè)計的題目,雖然具體要求沒有看清,但是總結(jié)一下,可以看出,其需要我們能把一個具體案例或一件事情反映為程序來表達,數(shù)據(jù)結(jié)構(gòu)就是橋梁,通過自己的設(shè)計,使應(yīng)用能力得以融匯,對與問題,具有了初步的分析,繼而解決之的能力,感覺對以后的學習會有很大的幫助,學習無非是用于實踐。
認識到自己的不足,希望能有進一步的發(fā)展。
算法設(shè)計心得體會 篇3
完成了這次的二元多項式加減運算問題的課程設(shè)計后,我的心得體會很多,細細梳理一下,有以下幾點:
1、程序的編寫中的語法錯誤及修改
因為我在解決二元多項式問題中,使用了鏈表的方式建立的二元多項式,所以程序的空間是動態(tài)的生成的,而且鏈表可以靈活地添加或刪除結(jié)點,所以使得程序得到簡化。但是出現(xiàn)的語法問題主要在于子函數(shù)和變量的定義,降序排序,關(guān)鍵字和函數(shù)名稱的書寫,以及一些庫函數(shù)的規(guī)范使用,這些問題均可以根據(jù)編譯器的警告提示,對應(yīng)的將其解決。
2、程序的設(shè)計中的'邏輯問題及其調(diào)整
我在設(shè)計程序的過程中遇到許多問題,首先在選擇數(shù)據(jù)結(jié)構(gòu)的時候選擇了鏈表,但是鏈表的排序比較困難,特別是在多關(guān)鍵字的情況下,在一種關(guān)鍵字確定了順序以后,在第一關(guān)鍵字相同的時候,按某種順序?qū)Φ诙P(guān)鍵字進行排序。在此程序中共涉及到3個量數(shù),即:系數(shù),x的指數(shù)和y的指數(shù),而關(guān)鍵字排是按x的指數(shù)和y的指數(shù)來看,由于要求是降冪排序且含有2個關(guān)鍵字,所以我先選擇x的指數(shù)作為第一關(guān)鍵字,先按x的降序來排序,當x的指數(shù)相同時,再以y為關(guān)鍵字,按照y的指數(shù)大小來進行降序排列。
另外,我在加法函數(shù)的編寫過程中也遇到了大量的問題,由于要同時比較多個關(guān)鍵字,而且設(shè)計中涉及了數(shù)組和鏈表的綜合運用,導(dǎo)致反復(fù)修改了很長的時間才完成了一個加法的設(shè)計。但是,現(xiàn)在仍然有一個問題存在:若以0為系數(shù)的項是首項則顯示含有此項,但是運算后則自動消除此項,這樣是正確的。但是當其不是首項的時候,加法函數(shù)在顯示的時候有0為系數(shù)的項時,0前邊不顯示符號,當然,這樣也可以理解成當系數(shù)為0時,忽略這一項。這也是本程序中一個不完美的地方。
我在設(shè)計減法函數(shù)的時候由于考慮不夠充分就直接編寫程序,走了很多彎路,不得不停下來仔細研究算法,后來發(fā)現(xiàn)由于前邊的加法函數(shù)完全適用于減法,只不過是將二元多項式B的所有項取負再用加法函數(shù)即可,可見算法的重要性不低于程序本身。
3、程序的調(diào)試中的經(jīng)驗及體會
我在調(diào)試過程中,發(fā)生了許多小細節(jié)上的問題,它們提醒了自己在以后編程的時候要注意細節(jié),即使是一個括號的遺漏或者一個字符的誤寫都會造成大量的錯誤,浪費許多時間去尋找并修改,總結(jié)的教訓(xùn)就是寫程序的時候,一定要仔細、認真、專注。
我還有一個很深的體會就是格式和注釋,由于平時不注意格式和注釋這方面的要求,導(dǎo)致有的時候在檢查和調(diào)試的時候很不方便。有的時候甚至剛剛完成一部分的編輯,結(jié)果一不注意,就忘記了這一部分程序的功能。修改的時候也有不小心誤刪的情況出現(xiàn)。如果注意格式風格,并且養(yǎng)成隨手加注釋的習慣,就能減少這些不必要的反復(fù)和波折。還有一點,就是在修改的時候,要注意修改前后的不同點在哪里,改后調(diào)試結(jié)果要在原有的基礎(chǔ)上更加精確。
算法設(shè)計心得體會 篇4
通過這次課程設(shè)計使我進一步達到理論與實際相結(jié)合,提高了自己組織數(shù)據(jù)及編寫程序的能力,使我們能夠根據(jù)問題要求和數(shù)據(jù)對象的特性,學會數(shù)據(jù)組織的方法,把現(xiàn)實世界中的實際問題在計算機內(nèi)部表示出來并用軟件解決問題,培養(yǎng)良好的程序設(shè)計技能,掌握設(shè)計程序的思路,學會用計算機語言編寫程序,以實現(xiàn)所需處理的任務(wù),鍛煉自己的動腦能力,學會用自己的`思路解決現(xiàn)實中的實際問題,雖然一開始也走了一些彎路不過在同學和老師的點撥下完成了該程序,這次課程設(shè)計中遇到了很多問題,一開始準備用二維數(shù)組存放的可考慮到同一個學校同一個項目有好幾個人參加,就不能用二維數(shù)組了,如果每個學校都申請一個二維數(shù)組也非常不方便,還是用順序表方便也不浪費空間,在這次課程設(shè)計的過程中雖然很多次都參照了課本及資料,不過這使我更加熟悉了順序表以及結(jié)構(gòu)體的定義及實現(xiàn),調(diào)試過程中也遇到了一些問題也都是自己獨立思考完成的,還有一個體會是,遇到不會的地方可以參考課本也可以去圖書館或網(wǎng)上查資料,當然主要思路有了也就簡單點了。在老師的答辯指指導(dǎo)下,程序數(shù)組那塊程序的書寫老師問我為什么是那樣的,當時寫這塊程序的時候是看書上數(shù)組那塊程序再加上自己的主觀想法覺得就是這樣寫的,雖然這塊程序當時那種主觀想法是寫對了,但是經(jīng)過老師的答辯提問才知道雖然是寫對了,但是這種思考和想法是錯誤不科學的,真正的是因為第2次循環(huán)是因為第一次釋放了一個。所以通過這次課程設(shè)計讓我懂得了一個很重要的道理,就是以后如果哪地方有一點迷惑,有一點不懂的地方不能憑自己主觀的思考和想法覺得應(yīng)該是這樣的,一定要找老師問清楚為什么是這樣的,一定要把每步每個小程序都要搞的十分的清楚,這真是個很好的收獲。還有就是這個程序的男女問題上,開始準備在結(jié)構(gòu)體中加一個sex的點,大使那樣對與男女項目還是有點麻煩,后來在同學的提醒下,通過參賽項目號就可以解決了,比m大就是女子項目,比m小或者等于m就是男子項目。這樣就可以很完美地解決這個問題了。
其實,當你實驗遇到問題時,自己會通過很多途徑去解決它,沒有解決時,心急如焚,解決之后的那種快感是前所未有的,這也許就是付出了行動之后的收獲吧!
這也教會了我們以后在社會上,遇見了事情不可怕,只要不被困難擊倒,解決了它,那樣我們就是勝利的!
【算法設(shè)計心得體會】相關(guān)文章:
算法教學設(shè)計05-18
算法教學設(shè)計7篇05-18
倡算法多樣化數(shù)學教學心得體會10-07
《簡便算法》教后反思10-06
《加、減法的簡便算法》教案03-05
《簡便算法》教后反思范文10-06
《乘法和連除的簡便算法》教學反思10-27
設(shè)計心得體會12-31
分數(shù)除法的意義和計算法則教案02-26