




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、.分治法研究與應(yīng)用學(xué)生:指導(dǎo)教師:淮南師范學(xué)院數(shù)學(xué)與計(jì)算科學(xué)系摘要:分治算法也叫分治策略,把輸入分為若干個(gè)部分,遞歸的解每一個(gè)問題,最后將這些子問題合并成為一個(gè)全局解。如果子問題較大,可以再次使用分治策略。由此可以得到分治策略解決的問題特點(diǎn):該問題的規(guī)??s小到一定的程度就可以容易地解決;該問題可以分解為若干個(gè)規(guī)模較小的相同問題;分解出的子問題的解可以合并為原問題的解;分解出的各個(gè)子問題是相互獨(dú)立的。關(guān)鍵字:分治法、分治策略、javaPartition method to study and applicationStudent:songguoxianInstructor :kongjunDep
2、artment of Mathematics and computational Science Huainan Normal UniversityAbstract:Partition algorithm also called partition strategies, put input into a number part, of the solution of the recursive every question, will ultimately these subproblems merged with a global solution if the son problem i
3、s bigger, can use again this can get partition strategies to solve the problem of partition strategies characteristics: the size of the problem down to a certain extent can easily resolve; This problem can be decomposed into some smaller the same problem; The separating the son of the solution of th
4、e problem of the original problem can merge solutions; The separating each subproblem is independent of each otherKey words:divide-and-conquer、Divide-Conquer algorithm、java前言在計(jì)算機(jī)科學(xué)中,分治法是一種很重要的算法。字面上的解釋是“分而治之”,就是把一個(gè)復(fù)雜的問題分成兩個(gè)或更多的相同或相似的子問題,再把子問題分成更小的子問題直到最后子問題可以簡單的直接求解,原問題的解即子問題的解的合并。這個(gè)技巧是很多高效算法的基礎(chǔ),如排序
5、算法(快速排序,歸并排序),傅立葉變換(快速傅立葉變換),任何一個(gè)可以用計(jì)算機(jī)求解的問題所需的計(jì)算時(shí)間都與其規(guī)模有關(guān)。問題的規(guī)模越小,越容易直接求解,解題所需的計(jì)算時(shí)間也越少。例如,對(duì)于n個(gè)元素的排序問題,當(dāng)n=1時(shí),不需任何計(jì)算。 n=2時(shí),只要作一次比較即可排好序。n=3時(shí)只要作3次比較即可,。 而當(dāng)n較大時(shí),問題就不那么容易處理了。要想直接解決一個(gè)規(guī)模較大的問題,有時(shí)是相當(dāng)困難的。 分治法的設(shè)計(jì)思想是,將一個(gè)難以直接解決的大問題,分割成一些規(guī)模較小的相同問題,以便各個(gè)擊破,分而治之。 分治策略是:對(duì)于一個(gè)規(guī)模為n的問題,若該問題可以容易地解決(比如說規(guī)模n較?。﹦t直接解決,否則將其分解為
6、k個(gè)規(guī)模較小的子問題,這些子問題互相獨(dú)立且與原問題形式相同,遞歸地解這些子問題,然后將各子問題的解合并得到原問題的解。這種算法設(shè)計(jì)策略叫做分治法。 如果原問題可分割成k個(gè)子問題,1<kn ,且這些子問題都可解并可利用這些子問題的解求出原問題的解,那么這種分治法就是可行的。由分治法產(chǎn)生的子問題往往是原問題的較小模式,這就為使用遞歸技術(shù)提供了方便。在這種情況下,反復(fù)應(yīng)用分治手段,可以使子問題與原問題類型一致而其規(guī)模卻不斷縮小,最終使子問題縮小到很容易直接求出其解。這自然導(dǎo)致遞歸過程的產(chǎn)生。分治與遞歸像一對(duì)孿生兄弟,經(jīng)常同時(shí)應(yīng)用在算法設(shè)計(jì)之中,并由此產(chǎn)生許多高效算法。 分治法所能解決的問題一般
7、具有以下幾個(gè)特征: 1) 該問題的規(guī)??s小到一定的程度就可以容易地解決 2) 該問題可以分解為若干個(gè)規(guī)模較小的相同問題,即該問題具有最優(yōu)子結(jié)構(gòu)性質(zhì)。 3) 利用該問題分解出的子問題的解可以合并為該問題的解; 4) 該問題所分解出的各個(gè)子問題是相互獨(dú)立的,即子問題之間不包含公共的子子問題。上述的第一條特征是絕大多數(shù)問題都可以滿足的,因?yàn)閱栴}的計(jì)算復(fù)雜性一般是隨著問題規(guī)模的增加而增加;第二條特征是應(yīng)用分治法的前提它也是大多數(shù)問題可以滿足的,此特征反映了遞歸思想的應(yīng)用;第三條特征是關(guān)鍵,能否利用分治法完全取決于問題是否具有第三條特征,如果具備了第一條和第二條特征,而不具備第三條特征,則可以考慮用貪心
8、法或動(dòng)態(tài)規(guī)劃法。第四條特征涉及到分治法的效率,如果各子問題是不獨(dú)立的則分治法要做許多不必要的工作,重復(fù)地解公共的子問題,此時(shí)雖然可用分治法,但一般用動(dòng)態(tài)規(guī)劃法較好。以及不存在有效算法的本質(zhì)問題的驚人發(fā)現(xiàn)。這些結(jié)果點(diǎn)燃了計(jì)算機(jī)學(xué)者對(duì)算法研究的興趣。算法設(shè)計(jì)與分析已成為一個(gè)受到廣泛注意的領(lǐng)域。計(jì)算機(jī)的普及極大地改變了人們的生活。目前,各行業(yè)、各領(lǐng)域都廣泛采用了計(jì)算機(jī)的信息技術(shù),并由此產(chǎn)生出開發(fā)各種應(yīng)用軟件的需求。為了最少的成本,最快的速度,最好的 質(zhì)量開發(fā)出適合各種應(yīng)用需求的軟件, 必須遵循軟件工程的原則。 設(shè)計(jì)一個(gè)高效的程序不僅 需要編程小技巧, 更需要合理的數(shù)據(jù)組織和清晰高效的算法, 這正是計(jì)
9、算機(jī)科學(xué)領(lǐng)域數(shù)據(jù)結(jié)構(gòu)與算法設(shè)計(jì)所研究的主要內(nèi)容。 一些著名的計(jì)算機(jī)科學(xué)家在有關(guān)計(jì)算機(jī)科學(xué)教育的論述中認(rèn)為, 計(jì)算機(jī)科學(xué)是一中創(chuàng)造性思維活動(dòng),其教育必須面向設(shè)計(jì)。計(jì)算機(jī)算法設(shè)計(jì)與分析正是一門面向設(shè)計(jì),且處于計(jì)算 機(jī)學(xué)科核心地位的教育課程。 通過對(duì)計(jì)算機(jī)算法系統(tǒng)的學(xué)習(xí)與研究, 掌握算法設(shè)計(jì)的主要法 方法, 培養(yǎng)對(duì)算法的計(jì)算復(fù)雜性正確分析的能力, 為獨(dú)立設(shè)計(jì)算法和對(duì)算法進(jìn)行復(fù)雜性分析 奠定堅(jiān)實(shí)的理論基礎(chǔ)。 本程序主要采用分治法的思想, 在若干個(gè)數(shù)據(jù)中找出其中第 k 小的數(shù)。通過對(duì)實(shí)際問題 的分析,借鑒分治法的特點(diǎn),并利用 java 語言編寫具有合理的數(shù)據(jù)組織和清晰高效的算法的程序,從而達(dá)到解決實(shí)際的
10、問題的目的。正文2.1設(shè)計(jì)的目的和意義2.1.1設(shè)計(jì)的目的隨著科學(xué)技術(shù)的不斷提高,計(jì)算機(jī)科學(xué)技術(shù)日漸成熟。我們應(yīng)該要更多的學(xué)習(xí)計(jì)算機(jī),并充分利用它為我們做出有用的事情。作為學(xué)信息與計(jì)算科學(xué)專業(yè)的我們更應(yīng)該對(duì)它有著更深的學(xué)習(xí),為了鞏固自己學(xué)到的計(jì)算機(jī)知識(shí)、鍛煉自己設(shè)計(jì)出一個(gè)具有合理的數(shù)據(jù)組織和清晰高效的算法、并將Java語言運(yùn)用于實(shí)踐,進(jìn)一步鞏固Java語言講法規(guī)則和各種函數(shù)的使用。使自己能編寫結(jié)構(gòu)清晰、風(fēng)格良好、邏輯嚴(yán)謹(jǐn)?shù)膉ava程序,從而具備解決綜合性實(shí)際問題的編程能力。2.1.2設(shè)計(jì)的意義通過對(duì)該問題的設(shè)計(jì)和解決,培養(yǎng)了自己運(yùn)用經(jīng)典算法的思想并綜合利用Java語言編寫程序解決實(shí)際問題的能力
11、,通過分析實(shí)際問題再設(shè)計(jì)簡單且可行的算法去解決它的能力,加強(qiáng)算法的運(yùn)用及對(duì)軟件工程方法的初步認(rèn)識(shí),提高軟件系統(tǒng)分析能力和程序文檔建立、歸納總結(jié)的能力。2.2設(shè)計(jì)的目標(biāo)與總體方案任何工程在創(chuàng)建之前總會(huì)有一個(gè)所需奮斗的目標(biāo),這樣才能有追求的方向,還應(yīng)有一個(gè)具體的方案,這樣才可能著手進(jìn)行實(shí)施。2.1.1設(shè)計(jì)的目標(biāo)通過設(shè)計(jì)要使程序在最后運(yùn)行過程中達(dá)到理想的效果。首先,讓用戶統(tǒng)計(jì)要查找的元素的總數(shù),并輸入到系統(tǒng)中;其次,讓用戶依次輸入預(yù)先準(zhǔn)備好的數(shù)據(jù);再次,讓用戶想要查找的第小的元素的值;最后,判斷用戶輸入的值的大小是否符合要求,并告訴給用戶,若符合要求,經(jīng)過計(jì)算后,將查找的結(jié)果告訴給用戶,結(jié)束該程序。
12、2.1.2設(shè)計(jì)的總體方案該程序主要運(yùn)用分治法的思想。首先,利用for循環(huán)的功能和數(shù)組的作用將用戶輸入的數(shù)據(jù)進(jìn)行篩選,即將重復(fù)的元素去掉,留下沒有重復(fù)數(shù)據(jù)的一組數(shù)組;再用while語句判斷輸入的k值是否符合要求;最后,將留下的數(shù)組以中位數(shù)為準(zhǔn),分成三個(gè)數(shù)組,并結(jié)合while語句的功能,實(shí)現(xiàn)循環(huán),逐步將得到的新數(shù)組分成三個(gè)數(shù)組,直到符合用戶的要求為止,并輸出結(jié)果。總之通過實(shí)施整體方案,使可以工程運(yùn)行,并且實(shí)現(xiàn)良好的運(yùn)行效果,成為一個(gè)有利用價(jià)值的程序。 2.3設(shè)計(jì)的方法和內(nèi)容該程序在住宿樓7A234的個(gè)人計(jì)算機(jī)上進(jìn)行編寫和調(diào)試,所用的軟件。2.3.1硬件環(huán)境要求CPU:Pentium III或更高級(jí)
13、別,顯卡:geforce 2及以上,內(nèi)存:1G或更多,硬盤:100G或更多。2.3.2軟件環(huán)境需求操作系統(tǒng):WindowsXP,Windows7系統(tǒng)請(qǐng)?jiān)诩嫒菽J较逻\(yùn)行。必備的軟件:eclipse;JDK1.6;my eclipse。2.3.3設(shè)計(jì)的流程圖圖2-1為該程序的設(shè)計(jì)流程圖,當(dāng)用戶進(jìn)入運(yùn)行界面后,按照提示先輸入已準(zhǔn)備好的數(shù)據(jù)的總數(shù)目,再依次輸入各個(gè)元素;系統(tǒng)將數(shù)據(jù)進(jìn)行整理后,等待用戶輸入k值的大小,并立即判斷用戶想要查找的數(shù)據(jù)是否存在;若存在,則用分治法的思想進(jìn)行查找,找到后輸出結(jié)果;最后,提示用戶是否想繼續(xù)查找另一個(gè)第k小的數(shù),若用戶想,則程序重復(fù)上述步驟,否則,結(jié)束程序。2.3.4
14、設(shè)計(jì)的方法及詳細(xì)內(nèi)容本程序可以分為四大模塊:讓用戶輸入信息、整理數(shù)據(jù)、查找數(shù)據(jù)并輸出結(jié)果、詢問用戶是否繼續(xù)。2.3.4.1讓用戶輸入信息該部分可以讓用戶在運(yùn)行程序的界面輸入每個(gè)數(shù)據(jù),用戶可以根據(jù)實(shí)際需要,先輸入預(yù)先準(zhǔn)備查找的數(shù)據(jù)的總數(shù)目;再依次輸入各個(gè)數(shù)據(jù);最后輸入k的具體數(shù)值,因需要考慮實(shí)際情況,對(duì)k的大小作了要求。代碼如下:package com.song;import java.util.Scanner;publicclass ThesisDemo01 publicstaticvoid main(String args) Scanner input = new Scanner(Syste
15、m.in);System.out.println("請(qǐng)輸入數(shù)據(jù)的長度");/提示用戶輸入int s = input.nextInt();/輸入數(shù)據(jù)int a;/建立數(shù)組a = newints;System.out.println("請(qǐng)依次輸入數(shù)據(jù)");for(int i=0; i <= s ; i+)/循環(huán)輸入數(shù)組的數(shù)據(jù)int b = input.nextInt();ai = b ;while(z>0)System.out.println("請(qǐng)輸入 K 的值!");/提示用戶輸入k的值int k = input.nextI
16、nt();/定義k的值為int類型/用if判斷用戶所輸入的數(shù)字是否合理if(k<1)System.out.println("對(duì)不起,你輸入的數(shù)字太小!");/提示用戶所輸入的數(shù)字太小elseif(k > s)System.out.println("對(duì)不起,你輸入的數(shù)字太大!");/提示用戶所輸入的數(shù)字太大elsez-;開始讓用戶輸入元素的總數(shù)依次輸入所需的元素刪除重復(fù)的數(shù)據(jù)讓用戶輸入k的值否判斷能否查到此數(shù) 能以中位數(shù)為準(zhǔn),將數(shù)組分為三個(gè)數(shù)組 k=k-f-1e、f、g變?yōu)槌踔?e、f、g變?yōu)槌踔?小于中位數(shù)的元素的集合Xiaof等于中位數(shù)的元
17、素的集合Dengg大于中位數(shù)的元素的集合Daekk 大 小 于 于 f+1 f+1 k=f+1輸出結(jié)果提示用戶是否繼續(xù). 是 否結(jié)束圖2-1 程序設(shè)計(jì)流程圖2.3.4.2數(shù)據(jù)整理此部分主要對(duì)用戶依次輸入的所有數(shù)據(jù)進(jìn)行整理。即是將用戶輸入的每個(gè)數(shù)據(jù)元素依次存入到一個(gè)數(shù)組中,再對(duì)這個(gè)數(shù)組進(jìn)行依次掃描,若沒有發(fā)現(xiàn)了相同的元素,則將該元素存入到另一個(gè)數(shù)組中,否則,繼續(xù)掃描,且不將該數(shù)存在另一個(gè)數(shù)組中。因?yàn)?,這樣可以方便地告訴用戶他想要查找的第k小的數(shù)是否存在,也可以減小在后面用分治法查找數(shù)據(jù)時(shí)的時(shí)間復(fù)雜度。其具體做法如下:序號(hào): 1 2 3 4 5 6 7 8 9firsti 5 3 2 52 1 6
18、 56a 5 原數(shù)組第1個(gè)數(shù)賦給a1 ,i+a 5 3原數(shù)組第2個(gè)數(shù)賦給a2 ,i+a 5 3 2 原數(shù)組第3個(gè)數(shù)賦給a3 ,i+a 5 3 2 first4=a1,a 5 3 2 first5=a3,i+a 5 3 2 1原數(shù)組第6個(gè)數(shù)賦給a4 ,i+a 5 3 2 16原數(shù)組第7個(gè)數(shù)賦給a5 ,i+a 5 3 2 16 first8=a1,i+a 5 3 2 16 first9=a7,i+ 結(jié)束經(jīng)過整理后的數(shù)組a所存的元素分別為5、3、2、1、6,且將用戶輸入的元素的總數(shù)目變?yōu)?。其主要代碼是:a1= first1; /根據(jù)常規(guī),可首先將數(shù)組first 中的第一個(gè)數(shù)賦給a for(i=1;
19、I<= s;i+)/依次取first 中的數(shù)與a 中數(shù)進(jìn)行比較length+;/數(shù)組a的長度加1for(j=1;j<length;j+)if(aj= firsti) /若a中有與firsti相等的數(shù),讓a與firsti+1相比 length-;/因firsti不能存入a 中 break; else if(aj!= firsti)if(j=length) /判斷a 中的數(shù)是否全部與firsti不相等 j+; else alength= firsti;/將first i存入a 中2.3.4.3查找數(shù)據(jù)并輸出結(jié)果這個(gè)部分是此程序的核心,因?yàn)樵摬糠种饕菫榱藴p小查找的時(shí)間復(fù)雜度,用分治法的
20、思想來完成,先在a中選出一個(gè)數(shù)(中位數(shù))并賦給x,并以x為基準(zhǔn),將a分為三部分。第一部分元素都大于x,第二部分元素都小于x,第三部分元素等于x(即該部分中只有x)。設(shè)第二部分中的元素個(gè)數(shù)為f,若k<f+1,則第k小的元素在第二部分中;若k=f+1,則第三部分中的x即為所求;若k>f+1,則第k小的元素在第一部分中,繼續(xù)用類似的方法對(duì)第三部分進(jìn)行處理。它也是在編寫程序時(shí)遇到的最大困難。具體的實(shí)例如下:分別定義三個(gè)數(shù)組da、xiao、deng存儲(chǔ)數(shù)組a分成的三部分,用e、f、g分別記錄這三個(gè)數(shù)組所存儲(chǔ)的元素的個(gè)數(shù),先令k=3。alength 5 3 2 1 6 x=a(length+1
21、)/2=a3=2da 5 e+,i+da 5 3 e+,i+deng 2 g+,i+xiao 1 f+,i+da 5 3 6 e+,i+ 結(jié)束,e=3;f=1;g=1比較k與f+1的大小,則第k(k=3)小的數(shù)在da中,k=k-f-1=1,將da中的元素依次賦給a中,并使e=f=g=0。alength 5 3 6 x=a(length+1)/2=a2=3da 5 e+,i+deng 3 g+,i+da 5 6 e+,i+ 結(jié)束,e=2;f=0;g=1比較k與f+1的大小,顯然k=f+1。所以第k小的數(shù)查找成功,輸出結(jié)果3,即為用戶想要在他輸入的一組元素里(5 3 2 5 2 1 6 5 6)查
22、找的第3小的數(shù)。該部分的關(guān)鍵代碼是:while(k>0)x=a(s+1)/2;/將a的中位數(shù)賦給變量xdengg=x; for(i=1;i<=s;i+) /對(duì)a進(jìn)行掃描if(i=(s+1)/2)/判斷次數(shù)是否是中位數(shù) continue;if(ai>x)/將a分成三部分 e+; dae=ai; else if(ai<x) f+; xiaof=ai; else g+; dengg=ai;if(k<f+1) /判斷第k小的數(shù)在哪個(gè)數(shù)組中s =f;/使a的長度變?yōu)樵摂?shù)組的長度e=f=0;g=1;/讓變量變?yōu)槌踔担WC程序能正常運(yùn)行for(i=1;i <= s;i+)
23、/將該數(shù)組賦給aai=xiaoi;else if(k>f+1) /與上類似k=k-f-1;ai=dai;else k=0;/改變條件,結(jié)束此循環(huán),并輸出結(jié)果System.out.println(“你所要查找的數(shù)據(jù)時(shí):” + deng1);2.3.4.4詢問用戶是否繼續(xù)該部分是此程序的尾聲,表面上看起來不是特別的重要,但是,為了提高程序的可用性和可擴(kuò)展性,能夠推向市場進(jìn)行使用,是作為一個(gè)程序的設(shè)計(jì)和開發(fā)者必須考慮的方向。在此為了鍛煉自己的綜合能力,隨之進(jìn)行了簡單的設(shè)計(jì)。主要目的是為了給用戶帶來方便,讓用戶只進(jìn)行一次數(shù)據(jù)輸入,就可以查找出任意第k小的數(shù),也可以隨時(shí)退出程序。主要代碼是::Sy
24、stem.out.println(“你想繼續(xù)查找想要的數(shù)據(jù)嗎.請(qǐng)輸入Y或者N:”);/提示用戶是否繼續(xù)Scanner input = Scanner(System.in);String s = input.next();/讓用戶輸入他的選擇信息System.out.println(); while(null != s && “” != s)/判斷用戶輸入的信息是否符合要求 System.out.println(“你想繼續(xù)查找想要的數(shù)據(jù)嗎.請(qǐng)輸入Y或者N:”);/告訴用戶輸入的信息有誤,并重新輸入 if( s =0) /判斷用戶的選擇z=1; elseSystem.out.pri
25、ntln(“請(qǐng)按任意鍵繼續(xù)”);根據(jù)最后調(diào)試好的程序,并假設(shè)用戶在輸入指令時(shí)有不符合要求的指令,并且在看到結(jié)果后還重復(fù)查看過其他第k小的數(shù)。運(yùn)行的結(jié)果如圖2-2、圖2-3所示,圖2-2 此程序運(yùn)行的前部分結(jié)果圖2-3 此程序運(yùn)行的后部分結(jié)果2.4設(shè)計(jì)的創(chuàng)新與關(guān)鍵技術(shù)2.4.1設(shè)計(jì)的特點(diǎn)本程序設(shè)計(jì)的主要特點(diǎn)體現(xiàn)在:利用數(shù)組和for循環(huán)語句存儲(chǔ)用戶首次輸入的需要查找的數(shù)據(jù),再用for語句對(duì)該數(shù)組進(jìn)行掃描,將重復(fù)的元素刪除,即把沒有重復(fù)的元素存在另一個(gè)數(shù)組。用分治法的思想將修改后的數(shù)組分成三部分,并判斷第k小的數(shù)是否已經(jīng)找出,若找出,則輸出結(jié)果;否則,繼續(xù)。用while語句合理地控制了循環(huán),增強(qiáng)了程
26、序的可讀性,增強(qiáng)了程序的實(shí)用性。2.4.2設(shè)計(jì)的難點(diǎn)本程序設(shè)計(jì)的難點(diǎn)主要是:要把用戶輸入數(shù)據(jù)進(jìn)行處理,如果用戶輸入的元素里面有重復(fù)的數(shù)據(jù),可能不會(huì)得到正確的結(jié)果,將數(shù)據(jù)進(jìn)行處理后在后面還會(huì)減少用分治法處理數(shù)組的時(shí)間復(fù)雜度,但是在編寫本部分的代碼是總是出錯(cuò),因?yàn)樯婕暗淖兞刻?,并且要同時(shí)在兩個(gè)數(shù)組里面進(jìn)行掃描。在使用分治法的思想處理數(shù)組時(shí),偶爾出現(xiàn)不符合邏輯的錯(cuò)誤,輸出的結(jié)果與設(shè)計(jì)者的要求甚遠(yuǎn)。用for語句實(shí)現(xiàn)循環(huán),容易造成死循環(huán)。2.4.3軟硬件調(diào)試及結(jié)果分析在程序的編寫和調(diào)試過程中,由于有重復(fù)的語句和多次用到if 語句和數(shù)組以及for語句,給調(diào)試造成了一定的困難,但由于程序結(jié)合緊密,邏輯性較
27、強(qiáng),流程清晰,最后還是順利完成了調(diào)試;在硬件方面由于該工程要求硬件環(huán)境較低,所以對(duì)于硬件的調(diào)試非常順利,沒有出現(xiàn)任何問題。由于該程序的代碼主要采用了教材中比較常見的結(jié)構(gòu)和語句,無特殊或較難的超綱知識(shí)點(diǎn),因此在編寫整個(gè)程序的過程中比較順利,代碼也符合邏輯。程序運(yùn)行結(jié)果較令人滿意,程序的每條代碼都起到了其相應(yīng)的作用。2.5結(jié)論經(jīng)過兩個(gè)星期的實(shí)踐,使我對(duì)是我對(duì)java語言,算法分析和設(shè)計(jì)有了更進(jìn)一步的了解,并且認(rèn)識(shí)到了運(yùn)用經(jīng)典算法的思想解決一些實(shí)際問題是非常有意義的,最主要的是可以減小時(shí)間復(fù)雜度,所以我認(rèn)為我們必須加強(qiáng)這方面的學(xué)習(xí)。經(jīng)過這次設(shè)計(jì)是我對(duì)java語言有了更進(jìn)一步熟悉,也鞏固了數(shù)據(jù)結(jié)構(gòu)和J
28、ava開發(fā)過程中的知識(shí)點(diǎn),更明白了學(xué)好java語言重在實(shí)踐,將理論聯(lián)系實(shí)際才有利于更好地學(xué)習(xí)和掌握各個(gè)重點(diǎn)。經(jīng)過這一段時(shí)間的實(shí)踐,我對(duì)自己有以下認(rèn)識(shí):要運(yùn)用自如地使用一個(gè)java算法,必須先弄清楚它的完整思想以好解決實(shí)際問題的過程,這樣才可以讓算法在自己的程序中發(fā)揮出最大的作用和優(yōu)勢(shì),就可以編寫出具有合理的數(shù)據(jù)組織和清晰高效的算法的完美程序我在實(shí)踐的時(shí)候發(fā)現(xiàn)自己有很多的不足之處,特別是有時(shí)候缺乏耐心。因?yàn)槊恳粋€(gè)程序在初步編寫完成的時(shí)候經(jīng)常是語法或者是運(yùn)行時(shí)錯(cuò)誤,不一定就能運(yùn)行,以至于接下來就是要花大量的精力去仔細(xì)地調(diào)試,力爭達(dá)到自己想要達(dá)到的目的。我認(rèn)為在實(shí)踐過程中仔細(xì)和嚴(yán)謹(jǐn)?shù)膽B(tài)度是成功的關(guān)鍵,它鍛煉了我們的能力,可以說將理論用于實(shí)踐是我們今后走向工作崗位的一個(gè)很好的鍛煉平臺(tái),我們應(yīng)該緊緊地抓住這個(gè)機(jī)會(huì),好好地鍛煉。此工程完全達(dá)到了預(yù)期的目標(biāo),但是還有些地方欠妥,例如:對(duì)算法的理解還不夠透徹,然而在解決實(shí)際問題時(shí),顯得不夠水平,運(yùn)用了一個(gè)很好的算法的思想,但解決的問題比較簡單,這需要自己進(jìn)一步完善,力爭讓自己加深對(duì)各個(gè)算法的理解程度。從編寫代碼的角度來看還有
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度農(nóng)村土地承包經(jīng)營權(quán)與農(nóng)村文化傳承保護(hù)合同
- 二零二五年度魚塘承包權(quán)及養(yǎng)殖技術(shù)培訓(xùn)轉(zhuǎn)讓合同
- Unit 3 Writing Home Lesson 15 Sending the Postcards同步練習(xí)(含答案含聽力原文無聽力音頻)
- Unit 1 Going to Beijing Lesson 6 Danny Is Lost!同步練習(xí)(含答案含聽力原文無音頻)
- 2025年度高端餐飲品牌區(qū)域代理權(quán)合作協(xié)議書
- 二零二五年度智能家居銷售總額提成及市場拓展合同
- 2025年巢湖b2貨運(yùn)上崗證模擬考試
- 在校實(shí)習(xí)生實(shí)習(xí)合同
- 2024年正規(guī)離婚協(xié)議
- 2025年遂寧年貨運(yùn)從業(yè)資格證考試題庫
- (新插圖)人教版四年級(jí)下冊(cè)數(shù)學(xué) 第2招 巧算24點(diǎn) 期末復(fù)習(xí)課件
- 駕駛員違規(guī)違章安全教育談話記錄表
- 2023年10月山東青島開放大學(xué)招考聘用工作人員(第二批)筆試歷年高頻考點(diǎn)試題含答案帶詳解
- 《計(jì)算機(jī)應(yīng)用基礎(chǔ) Win10+Office 2016》教案 模塊一 計(jì)算機(jī)基礎(chǔ)知識(shí)(二)
- 二手車交易行業(yè)行業(yè)網(wǎng)絡(luò)安全與威脅防護(hù)
- 小兒抽動(dòng)癥中西醫(yī)治療
- 一年級(jí)下冊(cè)《綜合實(shí)踐活動(dòng)》全冊(cè)教案【完整版】
- 人教版小學(xué)一年級(jí)英語課本上冊(cè)課件
- 電子對(duì)抗原理與技術(shù)PPT完整全套教學(xué)課件
- 烹飪美學(xué)PPT完整全套教學(xué)課件
- 金蝶云星空+V7.3-產(chǎn)品培訓(xùn)-供應(yīng)鏈-庫存管理
評(píng)論
0/150
提交評(píng)論