3.排序
(1)直接插入排序
插入排序的思想就是讀一個(gè),排一個(gè)。將數(shù)組的第1個(gè)數(shù)據(jù)放入數(shù)組的第1個(gè)位置,以后讀入的數(shù)據(jù)與已存入數(shù)組的數(shù)據(jù)進(jìn)行比較,確定它按從大到小(從小到大)的排列中排在正確的位置。將該位置以及以后的元素向后推移一個(gè)位置,將讀入的新數(shù)填到空出的位置即可。
(2)冒泡排序
以從大到小為例:依次比較相鄰的兩個(gè)數(shù),把大的放前面,小的放后面。即首先比較第1個(gè)數(shù)和第2個(gè)數(shù),大數(shù)放前,小數(shù)放后;然后比較完成第2個(gè)數(shù)和第3個(gè)數(shù);......;直到比較完了最后兩個(gè)數(shù)。第一趟排序結(jié)束,最小的一定沉到最后。重復(fù)上過(guò)程,仍從第1個(gè)數(shù)開始,到最后第2個(gè)數(shù)...... 由于在排序過(guò)程中總是大數(shù)往前,小數(shù)往后,相當(dāng)氣泡上升,所以叫冒泡排序。
2.我們以這個(gè)5次多項(xiàng)式函數(shù)為例加以說(shuō)明,設(shè):
f(x)=a5x5+a4x4+a3x3+a2x2+a1x+a0
首先,讓我們以5次多項(xiàng)式一步步地進(jìn)行改寫:
f(x)=(a5x4+a4x3+a3x2+a2x+a1)x+a0
=((a5x3+a4x2+ a3x+a2)x+a1)x+a0
=(((a5x2+a4x+ a3)x+a2)x+a1)x+a0
=((((a5x+a4)x+ a3)x+a2)x+a1)x+a0
上面的分層計(jì)算。只用了小括號(hào),計(jì)算時(shí),首先計(jì)算最內(nèi)層的括號(hào),然后由里向外逐層計(jì)算,直到最外層的括號(hào),然后加上常數(shù)項(xiàng)即可。
1.求最大公約數(shù)
(1)輾轉(zhuǎn)相除法
程序框圖與程序語(yǔ)句
程序:
INPUT “m,n=”;m,n
DO
r=m MOD n
m=n
n=r
LOOP UNTIL r=0
END
(2)更相減損術(shù)
更相減損術(shù)程序:
INPUT “請(qǐng)輸入兩個(gè)不相等的正整數(shù)”;a,b
i=0
WHILE a MOD 2=0 AND b MOD 2=0
a=a/2
b=b/2
i=i+1
WEND
DO
IF b<a THEN
t=a
a=b
b=t
END IF
c=a-b
a=b
b=c
LOOP UNTIL a=b
PRINT a^i
END
對(duì)于兩個(gè)正整數(shù)如何選擇合適的方法求他們的最大公約數(shù)
方法 |
適用范圍及特點(diǎn) |
短除法 |
適合兩個(gè)較小的正整數(shù)或兩個(gè)質(zhì)因數(shù)較少的正整數(shù),簡(jiǎn)便易操作。 |
窮舉法 |
適合計(jì)算機(jī)操作,但一一驗(yàn)證過(guò)于繁瑣。 |
輾轉(zhuǎn)相除法 |
適用于兩個(gè)較大的正整數(shù),以除法為主,輾轉(zhuǎn)相除法計(jì)算次數(shù)相對(duì)較少,特別當(dāng)兩個(gè)數(shù)字大小差別較大時(shí)計(jì)算次數(shù)較明顯。 |
更相減損術(shù) |
適用于兩個(gè)較大的正整數(shù),更相減損術(shù)以減法為主,計(jì)算次數(shù)上相對(duì)于輾轉(zhuǎn)相處法較多。 |
6] -3 0 15
[-3 6] 0 15
[-3 0 6] 15
[-3 0 6 15]
用冒泡排序法排序:
6 |
|
6 |
|
6 |
|
6 |
|
6 |
|
6 |
|
6 |
|
15 |
|
15 |
|
15 |
-3 |
|
-3 |
|
0 |
|
0 |
|
0 |
|
15 |
|
15 |
|
6 |
|
6 |
|
6 |
0 |
|
0 |
|
-3 |
|
15 |
|
15 |
|
0 |
|
0 |
|
0 |
|
0 |
|
0 |
15 |
|
15 |
|
15 |
|
-3 |
|
-3 |
|
-3 |
|
-3 |
|
-3 |
|
-3 |
|
-3 |
題型4:進(jìn)位值
例7.把十進(jìn)制數(shù)89化為三進(jìn)制數(shù),并寫出程序語(yǔ)句.
解析:具體的計(jì)算方法如下:
89=3×29+2
29=3×9+2
9=3×3+0
3=3×1+0
1=3×0+1
所以:89(10)=1011001(3)。
點(diǎn)評(píng):根據(jù)三進(jìn)制數(shù)滿三進(jìn)一的原則,可以用3連續(xù)去除89及其所的得的商,然后按倒序的先后順序取出余數(shù)組成數(shù)據(jù)即可。
例8.將8進(jìn)制數(shù)314706(8)化為十進(jìn)制數(shù),并編寫出一個(gè)實(shí)現(xiàn)算法的程序。
解析:314706(8)=3×85+1×84+4×83+7×82+0×81+6×80=104902。
所以,化為十進(jìn)制數(shù)是104902。
點(diǎn)評(píng):利用把k進(jìn)制數(shù)轉(zhuǎn)化為十進(jìn)制數(shù)的一般方法就可以把8進(jìn)制數(shù)314706(8)化為十進(jìn)制數(shù),然后根據(jù)該算法,利用GET函數(shù),應(yīng)用循環(huán)結(jié)構(gòu)可以設(shè)計(jì)程序。
7] 1 3 12 8 4 9 10
[7 1] 3 12 8 4 9 10
[7 3 1] 12 8 4 9 10
[12 7 3 1] 8 4 9 10
[12 8 7 3 1] 4 9 10
[12 8 7 4 3 1] 9 10
[12 9 8 7 4 3 1] 10
[12 10 9 8 7 4 3 1]
冒泡排序
7 |
|
7 |
|
7 |
|
7 |
|
7 |
|
7 |
|
7 |
|
7 |
1 |
1 |
3 |
|
3 |
|
3 |
|
3 |
|
3 |
|
3 |
||
3 |
3 |
1 |
|
12 |
|
12 |
|
12 |
|
12 |
|
12 |
||
12 |
12 |
12 |
|
1 |
|
8 |
|
8 |
|
8 |
|
8 |
||
8 |
8 |
8 |
|
8 |
|
1 |
|
4 |
|
4 |
|
4 |
||
4 |
4 |
4 |
|
4 |
|
4 |
|
1 |
|
9 |
|
9 |
||
9 |
9 |
9 |
|
9 |
|
9 |
|
9 |
|
1 |
|
10 |
||
10 |
10 |
10 |
|
10 |
|
10 |
|
10 |
|
10 |
|
|
第一趟
7 |
|
7 |
|
12 |
|
12 |
|
12 |
|
12 |
3 |
|
12 |
|
8 |
|
8 |
|
9 |
|
10 |
12 |
|
8 |
|
7 |
|
9 |
|
10 |
|
9 |
8 |
|
4 |
|
9 |
|
10 |
|
8 |
|
8 |
4 |
|
9 |
|
10 |
|
7 |
|
7 |
|
7 |
9 |
|
10 |
|
4 |
|
4 |
|
4 |
|
4 |
10 |
|
3 |
|
3 |
|
3 |
|
3 |
|
3 |
1 |
|
1 |
|
1 |
|
1 |
|
1 |
|
1 |
第2趟 第3趟 第4趟 第5趟 第6趟
點(diǎn)評(píng):直接插入法和冒泡法排序是常見(jiàn)的排序方法,通過(guò)該例,我們對(duì)比可以發(fā)現(xiàn),直接插入排序比冒泡排序更有效一些,執(zhí)行的操作步驟更少一些
例6.給出以下四個(gè)數(shù):6,-3,0,15,用直接插入法排序?qū)⑺鼈儼磸男〉酱蟮捻樞蚺帕,用冒泡法將它們按從大到小的順序?/p>
分析:不論從大到小的順序還是按從大到小的順序,都可按兩種方法的步驟進(jìn)行排序。
解析:
直接插入排序法:
題型1:求最大公約數(shù)
例1.(1)用輾轉(zhuǎn)相除法求123和48的最大公約數(shù)?
(2)用更相減損來(lái)求80和36的最大公約數(shù)?
解析:(1)輾轉(zhuǎn)相除法求最大公約數(shù)的過(guò)程如下:(建立帶余除式)
123=2×48+27
48=1×27+21
27=1×21+6
21=3×6+3
6=2×3+0
最后6能被3整除,得123和48的最大公約數(shù)為3。
(2)分析:我們將80作為大數(shù),36作為小數(shù),執(zhí)行更相減損術(shù)來(lái)求兩數(shù)的最大公約數(shù)。執(zhí)行結(jié)束的準(zhǔn)則是減數(shù)和差相等
更相減損術(shù):
因?yàn)?0和36都是偶數(shù),要去公因數(shù)2。
80÷2=40,36÷2=18;
40和18都是偶數(shù),要去公因數(shù)2。
40÷2=20,18÷2=9
下面來(lái)求20與9的最大公約數(shù),
20-9=11
11-9=2
9-2=7
7-2=5
5-2=3
3-2=1
2-1=1
可得80和36的最大公約數(shù)為22×1=4。
點(diǎn)評(píng):對(duì)比兩種方法控制好算法的結(jié)束,輾轉(zhuǎn)相除法是到達(dá)余數(shù)為0,更相減損術(shù)是到達(dá)減數(shù)和差相等。
例2.設(shè)計(jì)一個(gè)算法,求出840與1764的最大公因數(shù)。
解析:我們已經(jīng)學(xué)習(xí)過(guò)了對(duì)自然數(shù)的素因數(shù)分解的方法,下面的算法就是在此基礎(chǔ)上設(shè)計(jì)的。
解題思路如下:
首先對(duì)兩個(gè)數(shù)進(jìn)行素因數(shù)分解:
840=23×3×5×7,1764=22×32×72,
其次,確定兩個(gè)數(shù)的公共素因數(shù):2,3,7。
接著確定公共素因數(shù)的指數(shù):對(duì)于公共素因數(shù)2,840中為23,1764中為22,應(yīng)取較少的一個(gè)22,同理可得下面的因數(shù)為3和7。
算法步驟:
第一步:將840進(jìn)行素?cái)?shù)分解23×3×5×7;
第二步:將1764進(jìn)行素?cái)?shù)分解22×32×72;
第三步:確定它們的公共素因數(shù):2,3,7;
第四步:確定公共素因數(shù)2,3,7的指數(shù)分別是:2,1,1;
第五步:最大公因數(shù)為22×31×71=84。
點(diǎn)評(píng):質(zhì)數(shù)是除1以外只能被1和本身整除的正整數(shù),它應(yīng)該是無(wú)限多個(gè),但是目前沒(méi)有一個(gè)規(guī)律來(lái)確定所有的質(zhì)數(shù)
題型2:秦九韶算法
例3.(2009福州模擬)如果執(zhí)行右面的程序框圖,那么輸出的 ( )
A.22 B.46 C.94 D.190
答案 C
2、(2009浙江卷理)某程序框圖如圖所示,該程序運(yùn)行后輸出的的值是 ( )
A. B. C. D.
[解析]對(duì)于,而對(duì)于,則
,后面是,不
符合條件時(shí)輸出的.
答案 A
4.進(jìn)位制
(1)概念
進(jìn)位制是一種記數(shù)方式,用有限的數(shù)字在不同的位置表示不同的數(shù)值。可使用數(shù)字符號(hào)的個(gè)數(shù)稱為基數(shù),基數(shù)為n,即可稱n進(jìn)位制,簡(jiǎn)稱n進(jìn)制,F(xiàn)在最常用的是十進(jìn)制,通常使用10個(gè)阿拉伯?dāng)?shù)字0-9進(jìn)行記數(shù)。
對(duì)于任何一個(gè)數(shù),我們可以用不同的進(jìn)位制來(lái)表示。比如:十進(jìn)數(shù)57,可以用二進(jìn)制表示為111001,也可以用八進(jìn)制表示為71、用十六進(jìn)制表示為39,它們所代表的數(shù)值都是一樣的。
一般地,若k是一個(gè)大于一的整數(shù),那么以k為基數(shù)的k進(jìn)制可以表示為:
,
而表示各種進(jìn)位制數(shù)一般在數(shù)字右下腳加注來(lái)表示,如111001(2)表示二進(jìn)制數(shù),34(5)表示5進(jìn)制數(shù)。
(2)進(jìn)位制間的轉(zhuǎn)換
關(guān)于進(jìn)位制的轉(zhuǎn)換,教科書上以十進(jìn)制和二進(jìn)制之間的轉(zhuǎn)換為例講解,并推廣到十進(jìn)制和其它進(jìn)制之間的轉(zhuǎn)換。這樣做的原因是,計(jì)算機(jī)是以二進(jìn)制的形式進(jìn)行存儲(chǔ)和計(jì)算數(shù)據(jù)的,而一般我們傳輸給計(jì)算機(jī)的數(shù)據(jù)是十進(jìn)制數(shù)據(jù),因此計(jì)算機(jī)必須先將十進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制數(shù),再處理,顯然運(yùn)算后首次得到的結(jié)果為二進(jìn)制數(shù),同時(shí)計(jì)算機(jī)又把運(yùn)算結(jié)果由二進(jìn)制數(shù)轉(zhuǎn)換成十進(jìn)制數(shù)輸出。
非十進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù)比較簡(jiǎn)單,只要計(jì)算下面的式子值即可:
第一步:從左到右依次取出k進(jìn)制數(shù)各位上的數(shù)字,乘以相應(yīng)的k的冪,k的冪從n開始取值,每次遞減1,遞減到0,即;
第二步:把所得到的乘積加起來(lái),所得的結(jié)果就是相應(yīng)的十進(jìn)制數(shù)。
十進(jìn)制數(shù)轉(zhuǎn)換成非十進(jìn)制數(shù)
把十進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制數(shù),教科書上提供了“除2取余法”,我們可以類比得到十進(jìn)制數(shù)轉(zhuǎn)換成k進(jìn)制數(shù)的算法“除k取余法”。
非十進(jìn)制之間的轉(zhuǎn)換
一個(gè)自然的想法是利用十進(jìn)制作為橋梁。教科書上提供了一個(gè)二進(jìn)制數(shù)據(jù)與16進(jìn)制數(shù)據(jù)之間的互化的方法,也就是先有二進(jìn)制數(shù)轉(zhuǎn)化為十進(jìn)制數(shù),再由十進(jìn)制數(shù)轉(zhuǎn)化成為16進(jìn)制數(shù)。
7.將新數(shù)據(jù)列中的第7個(gè)數(shù)97與右邊相鄰的數(shù)49進(jìn)行比較,因?yàn)?9<97,97應(yīng)下沉,所以順序改變,得到新的數(shù)據(jù)列:
{38,49,65, 76, 13,97, 49,27}
我們把上述過(guò)程稱為一趟排序。其基本特征是最大的數(shù)據(jù)沉到底,即排在最左邊位置上的數(shù)據(jù)是數(shù)組中最大的數(shù)據(jù)。反復(fù)執(zhí)行上面的步驟,就能完成排序工作,排序過(guò)程不會(huì)超過(guò)7趟。這種排序的方法稱為冒泡排序。
上面的分析具有一般性,如果數(shù)據(jù)列有n個(gè)數(shù)據(jù)組成,至多經(jīng)過(guò)n-1趟排序,就能完成整個(gè)排序過(guò)程
6.將新數(shù)據(jù)列中的第6個(gè)數(shù)97與右邊相鄰的數(shù)27進(jìn)行比較,因?yàn)?7<97,97應(yīng)下沉,所以順序改變,得到新的數(shù)據(jù)列:
{38,49,65, 76, 13,97,27,49}
百度致信 - 練習(xí)冊(cè)列表 - 試題列表
湖北省互聯(lián)網(wǎng)違法和不良信息舉報(bào)平臺(tái) | 網(wǎng)上有害信息舉報(bào)專區(qū) | 電信詐騙舉報(bào)專區(qū) | 涉歷史虛無(wú)主義有害信息舉報(bào)專區(qū) | 涉企侵權(quán)舉報(bào)專區(qū)
違法和不良信息舉報(bào)電話:027-86699610 舉報(bào)郵箱:58377363@163.com