基于vfp的排序問(wèn)題_第1頁(yè)
基于vfp的排序問(wèn)題_第2頁(yè)
基于vfp的排序問(wèn)題_第3頁(yè)
基于vfp的排序問(wèn)題_第4頁(yè)
基于vfp的排序問(wèn)題_第5頁(yè)
已閱讀5頁(yè),還剩4頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、基于vfp的排序問(wèn)題摘要:排序是計(jì)算機(jī)內(nèi)經(jīng)常進(jìn)行的一種操作,其目的是將一組“無(wú)序”的記錄序列調(diào)整為“有序”的記錄序列。我們通過(guò)vfp些排序問(wèn)題,結(jié)合例子來(lái)了解一下計(jì)算機(jī)排序的原理及vfp程序的設(shè)計(jì)思路和方法。關(guān)鍵詞:方法,vfp,排序目錄TOC o 1-5 h z排序簡(jiǎn)述2 HYPERLINK l bookmark2 設(shè)計(jì)程序思維:2常見(jiàn)排序方法3(1)、冒泡排序3(2)、選擇排序4(3)、插入排序6(5)、快速排序7 HYPERLINK l bookmark12 學(xué)習(xí)vfp感想7 HYPERLINK l bookmark14 結(jié)束語(yǔ)8 HYPERLINK l bookmark16 參考文獻(xiàn)8

2、FORi=1TOn排序簡(jiǎn)述排序分為內(nèi)部排序和外部排序。若整個(gè)排序過(guò)程不需要訪問(wèn)外存便能完成,則稱(chēng)此類(lèi)排序問(wèn)題為內(nèi)部排序;反之,若參加排序的記錄數(shù)量很大,整個(gè)序列的排序過(guò)程不可能在內(nèi)存中完成,則稱(chēng)此類(lèi)排序問(wèn)題為外部排序。內(nèi)部排序的過(guò)程是一個(gè)逐步擴(kuò)大記錄的有序序列長(zhǎng)度的過(guò)程。二設(shè)計(jì)程序思維:程序:先要求使用者輸入N個(gè)要排序的數(shù),然后使用者依次輸入N個(gè)數(shù),最后依次輸出原始輸入數(shù)列、從小到大排列后的數(shù)列、從大到小排列后的數(shù)列、兩端大中間小排列后的數(shù)列。在整個(gè)程序設(shè)計(jì)過(guò)程中,我們首先要輸入即將輸入數(shù)的個(gè)數(shù),然后逐步輸入n個(gè)數(shù),首先按原始輸入順序輸出數(shù)列;其次是要按從小到大、大到小、兩端大中間小的方式輸出

3、,在后面這幾種輸出中我們必須先排序,在程序中我們采用升序排列數(shù)組,在升序排列可以采用多種方法,常見(jiàn)排序方法有冒泡排序法、選擇排序法、插入排序法、縮小增量排序、快速排序法等,在下面我們通過(guò)程序來(lái)一一介紹。再來(lái)強(qiáng)調(diào)一點(diǎn),從小到大、大到小、兩端大中間小這種輸出方式,我們只需要排升序一次即可,詳細(xì)思維見(jiàn)程序。整個(gè)程序設(shè)計(jì)架構(gòu)如圖1。已知一組無(wú)序數(shù)據(jù)a1、a2、an,需將其按升序排列。首先比較a1與a2的值,若a1大于a2則交換兩者的值,否則不變。再比較a2與a3的值,若a2大于a3則交換兩者的值,否則不變。再比較a3與a4,以此類(lèi)推,最后比較an-1與an的值。這樣處理一輪后,an的值一定是這組數(shù)據(jù)中

4、最大的。再對(duì)a1an-1以相同方法處理一輪,貝Oan-1的值一定是a1an-1中最大的。再對(duì)a1an-2以相同方法處理一輪,以此類(lèi)推。共處理n-1輪后a1、a2、an就以升序排列了。優(yōu)點(diǎn):穩(wěn)定,比較次數(shù)已知;缺點(diǎn):慢,每次只能移動(dòng)相鄰兩個(gè)數(shù)據(jù),移動(dòng)數(shù)據(jù)的次數(shù)多。SETTALKOFFCLEAR&清除屏幕內(nèi)容input將輸入的數(shù)的個(gè)數(shù)n=ton&輸入數(shù)n的值DIMENSIONa(n)&定義一個(gè)數(shù)組*輸入部分input第+STR(i,4)+個(gè)數(shù)=toa(i)&逐個(gè)輸入n個(gè)數(shù)ENDFOR*-原始順序?原始順序:&?不換行地輸出FORi=1TOn?a(i)ENDFOR?&換行*采用冒泡升序排序FORi=

5、0TOn-1FORj=2TOn-iIFa(j)=a(j-1)b=a(j-1)a(j-1)=a(j)a(j)=bendifendforENDFOR*-小到大?小到大順序:FORi=1TOn?a(i)ENDFOR?&換行*-大到小?大到小順序:FORi=nTO1STEP-1?a(i)ENDFOR?&換行*-大小大?大小大順序:FORi=nTO1STEP-2?a(i)ENDFORIFMOD(n,2)=0&如果輸入偶數(shù)個(gè)數(shù)FORi=1TOnSTEP2?a(i)ENDFORELSEFORi=2TOnSTEP2?a(i)ENDFORendif*SETTALKON、選擇排序已知一組無(wú)序數(shù)據(jù)a1、a2、an需

6、將其按升序排列。首先比較a1與a2的值,若a1大于a2則交換兩者的值,否則不變。再比較a1與a3的值,若a1大于a3則交換兩者的值,否則不變。再比較a1與a4,以此類(lèi)推,最后比較a1與an的值。這樣處理一輪后,a1的值一定是這組數(shù)據(jù)中最小的。再將a2與a3an以相同方法比較一輪,則a2的值一定是a2an中最小的。再將a3與a4an以相同方法比較一輪,以此類(lèi)推。共處理n-1輪后a1、a2、an就以升序排列了。優(yōu)點(diǎn):穩(wěn)定,比較次數(shù)與冒泡排序一樣;缺點(diǎn):相對(duì)之下還是慢。SETTALKOFFCLEAR&清除屏幕內(nèi)容input將輸入的數(shù)的個(gè)數(shù)n=ton&輸入數(shù)n的值DIMENSIONa(n)&定義一個(gè)數(shù)

7、組輸入部分FORi=1TOninput第+STR(i,4)+個(gè)數(shù)=toa(i)&逐個(gè)輸入n個(gè)數(shù)ENDFOR原始順序?原始順序:&?不換行地輸出FORi=1TOn?a(i)ENDFOR?&換行采用選擇升序排序FORi=1TOn-1FORj=i+1TOnIFa(j)=a(i)b=a(i)a(i)=a(j)a(j)=bendifendforENDFOR小到大?小到大順序:FORi=1TOn?a(i)ENDFOR?&換行*大到小?大到小順序:FORi=nTO1STEP-1?a(i)ENDFOR?&換行*大小大?大小大順序:FORi=nTO1STEP-2?a(i)ENDFORIFMOD(n,2)=0&如

8、果輸入偶數(shù)個(gè)數(shù)FORi=1TOnSTEP2?a(i)ENDFORELSEFORi=2TOnSTEP2?a(i)ENDFORendif*SETTALKON、插入排序已知一組升序排列數(shù)據(jù)a1、a2、an,組無(wú)序數(shù)據(jù)b1、b2、bm,需將二者合并成一個(gè)升序數(shù)列。首先比較b1與a1的值,若b1大于a1,則跳過(guò),比較b1與a2的值,若b1仍然大于a2,則繼續(xù)跳過(guò),直到b1小于a數(shù)組中某一數(shù)據(jù)ax,則將axan分別向后移動(dòng)一位,將b1插入到原來(lái)ax啲位置這就完成了b1的插入。b2bm用相同方法插入。(若無(wú)數(shù)組a,可將b1當(dāng)作n=1的數(shù)組a)優(yōu)點(diǎn):穩(wěn)定,快;缺點(diǎn):比較次數(shù)不一定,比較次數(shù)越少,插入點(diǎn)后的數(shù)據(jù)

9、移動(dòng)越多,特別是當(dāng)數(shù)據(jù)總量龐大的時(shí)候,但用鏈表可以解決這個(gè)問(wèn)題。、縮小增量排序由希爾在1959年提出,又稱(chēng)希爾排序已知一組無(wú)序數(shù)據(jù)a1、a2、an,需將其按升序排列。發(fā)現(xiàn)當(dāng)n不大時(shí),插入排序的效果很好。首先取一增量d(dvn),將a1、a1+d、a1+2d列為第一組,a2、a2+d、a2+2d列為第二組,ad、a2d、a3d列為最后一組以次類(lèi)推,在各組內(nèi)用插入排序,然后取dvd,重復(fù)上述操作,直到d=1。優(yōu)點(diǎn):快,數(shù)據(jù)移動(dòng)少;缺點(diǎn):不穩(wěn)定,d的取值是多少,應(yīng)取多少個(gè)不同的值,都無(wú)法確切知道,只能憑經(jīng)驗(yàn)來(lái)取。、快速排序快速排序是冒泡排序的改進(jìn)版,是目前已知的最快的排序方法。已知一組無(wú)序數(shù)據(jù)a1、

10、a2、an,需將其按升序排列。首先任取數(shù)據(jù)ax作為基準(zhǔn)。比較ax與其它數(shù)據(jù)并排序,使ax排在數(shù)據(jù)的第k位,并且使a1ak-1中的每一個(gè)數(shù)據(jù)vax,ak+1an中的每一個(gè)數(shù)據(jù)ax,然后采用分治的策略分別對(duì)a1ak-1和ak+1an兩組數(shù)據(jù)進(jìn)行快速排序。優(yōu)點(diǎn):極快,數(shù)據(jù)移動(dòng)少;缺點(diǎn):不穩(wěn)定。四學(xué)習(xí)vfp感想通過(guò)學(xué)習(xí)vfp,發(fā)現(xiàn)編程是要靠很多技巧和方法,還有一點(diǎn)只得去考慮的就是和數(shù)學(xué)聯(lián)系很大,特別是在編程的思維過(guò)程中,很多都涉及到的是數(shù)學(xué)里面的知識(shí),我在想,如果你把數(shù)學(xué)學(xué)好了,學(xué)編程肯定會(huì)很容易。還有要想學(xué)vfp,更多是大膽創(chuàng)新,不要死看書(shū)上的幾段代碼,而是我們看了代碼后,首先看能夠完全理解不,如果理解了,看還沒(méi)有別的方法可以解決,做到多個(gè)方法解決問(wèn)題是程序員不敗的砝碼。五結(jié)束語(yǔ)上述程序設(shè)計(jì)中,在這段時(shí)間老師的精心教學(xué)和耐心教導(dǎo)下,讓我漸漸熟悉了vfp編程環(huán)境,同時(shí)掌握了vfp編程的常用方法,在上述程序的設(shè)計(jì)周期中,可是查詢(xún)和書(shū)籍和請(qǐng)教同學(xué)、老師,終于理解了vfp中的排序方

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論