- 試題排行
- 最新熱點(diǎn)
- 最新推薦
2
3
4
5
6
7
8
9
10
2008年上半年軟考軟件設(shè)計(jì)師考試試題(上午)
2008年上半年軟考網(wǎng)絡(luò)工程師考試試題(下午)
2008年上半年軟考軟件設(shè)計(jì)師考試試題(下午)
2008年上半年軟件水平考試程序員考試試題(上
2008年下半年軟考網(wǎng)絡(luò)工程師預(yù)測(cè)試題及答案
2008年上半年軟件水平考試程序員考試試題(下
2008下半年軟件水平考試軟件設(shè)計(jì)師押題試卷
08年上半年軟考數(shù)據(jù)庫(kù)系統(tǒng)工程師考試試題(上
2008下半年軟件水平考試程序員模擬試題及答
五、排序
一、知識(shí)點(diǎn)
1、排序的定義
/內(nèi)排序:只在內(nèi)存中進(jìn)行
2、排序的分類
\外排序:與內(nèi)外存進(jìn)行排序
內(nèi)排序: /直接插入排序
1)插入排序
\shell排序
/冒泡排序
2)交換排序
\快速排序
/簡(jiǎn)單選擇排序
3)選擇排序 堆
\ 錦標(biāo)賽排序
4)歸并排序(二路)
5)基數(shù)排序(多關(guān)鏈字排序)
3、時(shí)間復(fù)雜度(上午題目常考,不會(huì)求也得記住啊兄弟姐妹們!)
* * * * * * 15 * * * 15 * * *
/穩(wěn)定 * * * * * * * * 15 15 * * * *(前后不變)
排序
\ 不穩(wěn)定 * * * * * * * * 15 15 * * * *(前后改變)
經(jīng)整理得:選擇、希爾、堆、快速排序是不穩(wěn)定的;直接插入、冒泡、合并排序是穩(wěn)定的。
●錦標(biāo)賽排序方法: 13 16 11 18 21 3 17 6
\ / \ / \ / \ /
13 11 3 6
\ / \ /
11 3
\ /
3(勝出,將其拿出,并令其為正無(wú)窮&Go On)
●歸并排序方法: 13 16 11 18 21 3 17 6
\ / \ / \ / \ /
13,16 11,18 3,21 6,17
\ / \ /
11,13,16,18 3,6,17,21
\ /
3,6,11,13,16,17,18,21
●shell排序算法:1)定義一個(gè)步長(zhǎng)(或者說增量)數(shù)組D[m];其中:D[m-1]=1(最后一個(gè)增量必須為1,否則可能不完全)
2)共排m趟,其中第i趟增量為D[i],把整個(gè)序列分成D[i]個(gè)子序列,分別對(duì)這D[i]個(gè)子序列進(jìn)行直接插入排序。
程序如下: for(i=0;i<m;i++)
{for(j=0;j<d[i];j++)
{對(duì)第i個(gè)子序列進(jìn)行直接插入排序;
注意:下標(biāo)之差為D[i];
}
}
●快速排序 ( smaller )data ( bigger )
d[] i-> 13 16 11 18 21 3 17 6 24 8 <-j
先從后往前找,再?gòu)那巴笳。?BR> 思想:空一個(gè)插入一個(gè),i空j挪,j空i挪(這里的i,j是指i,j兩指針?biāo)傅南聵?biāo))。
一次執(zhí)行算法:1)令temp=d[0](樞紐),i=0,j=n-1;
2)奇數(shù)次時(shí)從j位置出發(fā)向前找第一個(gè)比temp小的元素,找到后放到i的位置(d[i]=d[j];i++;) i往后挪。
3)偶數(shù)次時(shí)從i開始往后找第一個(gè)比temp大的數(shù),(d[j]=d[i];j--;)
4)當(dāng)i=j時(shí),結(jié)束循環(huán)。d[i]=temp;
再用遞歸對(duì)左右進(jìn)行快速排序,因?yàn)榭焖倥判蚴且粋(gè)典型的遞歸算法。
●堆排序
定義:d[n]滿足條件:d[i]<d[2i+1]&&d[i]<d[2i+2] 大堆(上大下。
d[i]>d[2i+1]&&d[i]>d[2i+2] 小堆(上小下大)
判斷是否為堆應(yīng)該將其轉(zhuǎn)換成樹的形式?偣才判騨-1次
調(diào)整(重點(diǎn))
程序: flag=0;
while(i<=n-1) {
if(d[i]<d[2*i+1])||(d[i]<d[2*i+2]))
{ if(d[2*i+1]>d[2*i+2]) 8 24 {d[i]<->d[2*i+1]; 24 21 -> 8 21
i=2*i+1;
else {
d[i]<->d[2*i+2];
i=2*i+2;
}
}
else
flag=1; //是堆
}
堆排序過程:
●基數(shù)排序(多關(guān)鍵字排序)
撲克: 1) 大小->分配
2) 花色->分配,收集
思想:分配再收集.
構(gòu)建鏈表:鏈表個(gè)數(shù)根據(jù)關(guān)鍵字取值個(gè)數(shù)有關(guān).
例:將下面九個(gè)三位數(shù)排序:
321 214 665 102 874 699 210 333 600
定義一個(gè)有十個(gè)元素的數(shù)組:
a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9]
第一趟(個(gè)位): 210 321 102 333 214 665 699
600 874
結(jié)果: 210 600 321 102 333 214 874 665 699
第二趟(十位): 600 210 321 333 665 874 699
102 214
結(jié)果: 600 102 210 214 321 333 665 874 699
第三趟(百位): 102 210 321 600 874
214 333 665
699
結(jié)果: 102 210 214 321 333 600 665 699 874(排序成功)
程序員考試下午試題最后一道一般是八大類算法里頭的.大家尤其要注意的是遞歸,因?yàn)榻鼛啄甓伎剂,而且有的還考兩題。
/數(shù)據(jù)結(jié)構(gòu)(離散)
迭代
\數(shù)值計(jì)算(連續(xù))
枚舉 策略好壞很重要
遞推
遞歸
回溯
分治
貪婪
動(dòng)態(tài)規(guī)劃
其中:遞推、遞歸、分治、動(dòng)態(tài)規(guī)劃四種算法思想基本相似。都是把大問題變成小問題,但技術(shù)上有差別。
上一頁(yè) [1] [2] [3] [4] [5] [6] [7] [8] [9] 下一頁(yè)
轉(zhuǎn)帖于:軟件水平考試_考試吧- 推薦給朋友
- 收藏此頁(yè)
·網(wǎng)絡(luò)工程師資料:網(wǎng)絡(luò)體系結(jié)構(gòu)-軟考網(wǎng)絡(luò)類題解 (2008-4-25 14:33:38)
·計(jì)算機(jī)網(wǎng)絡(luò)基礎(chǔ)網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)及優(yōu)缺點(diǎn)分析 (2008-2-22 14:04:32)
·網(wǎng)絡(luò)工程師必知:靜態(tài)路由協(xié)議配置方法 (2008-2-22 14:03:39)
·計(jì)算機(jī)網(wǎng)絡(luò)尼奎斯特 香農(nóng)公式例題解析 (2008-2-22 14:02:35)
·軟考復(fù)習(xí):因特網(wǎng)IP的分類、尋址規(guī)則及子網(wǎng)掩碼 (2008-2-22 13:57:21)
如果軟件水平考試網(wǎng)所轉(zhuǎn)載內(nèi)容不慎侵犯了您的權(quán)益,請(qǐng)與我們聯(lián)系,我們將會(huì)及時(shí)處理。如轉(zhuǎn)載本軟件水平考試網(wǎng)內(nèi)容,請(qǐng)注明出處。