軟考-軟件設計師-算法

排序算法

分類

插入排序(直接插入,希爾排序)

選擇排序(簡單選擇,堆排序)

交換排序(冒泡排序,快速排序)

歸併排序

基數排序

 

直接插入排序:每一步將一個待排序列根據一個元素值的大小插入已經排好序的那部分去。首個元素歸入已排好序列

第二個元素跟已排好序列比較,放於那位子,後續元素遞推。

 

希爾排序:對直接插入排序的改進,首次步長爲集合長度的二分之一,步長爲奇數。比較元素集合每隔步長爲一組進行直接插入排序,之後

步長爲上輪步長的二分之一,當步長爲1,整體進行直接插入排序。

 

簡單選擇排序:元素集合每次選出最小元素。首次遍歷找到最小值,與第一個元素交換,第二次遍歷剩餘序列找出最小值與第二個元素交換。

 

堆排序:堆(完全二叉樹,孩子節點都大於等於父節點---小根堆,或者 孩子節點都小於等於父節點---大根堆)

因完全二叉樹,則i>=N/2, i表示葉子節點

先從N/2的位置開始調整,大根堆,根節點位置都大於孩子節點,跟小則互調。

之後調整N/2-1節點,遞推。如果互調後被調節點仍有孩子節點,則遞歸上述步驟

之後根節點與最後序列元素對調,並斷開與父節點關係。後續遞歸

 

冒泡排序:每次與其相鄰元素比較,一輪下來確定最大值放在最後。

 

快速排序:主要思想採用分治法。選首個元素爲key,左指針從左到右,右指針從右到左。

如果左指針先動,相遇值比key大,相遇值需要跟key值交換。

右指針先動,尋找到比key小值,停下。左指針繼續,尋找比key大的值。知道,交換數據。遞歸

直到左右指針相遇,交換key值

 

歸併排序:二個一組,組內排序,二組二組進行歸併(2個指針都指向首個元素,依次對比,從小到大)

 

基數排序:個十百千位依次排序

 

 

算法穩定性:相同關鍵字,他們的位子是穩定的

複雜度

 

基數排序時間複雜度爲O(N*M),其中N爲數據個數,M爲數據位數。

查找算法

ASL:平均查找長度

順序查找:從表的一端開始,按順序比對當前結點與關鍵字是否相等的一個查找方式。ASL (n+1)/2

二分查找: 有序序列每次折半對比。 ASL log2(n+1)-1

分塊查找:對於順序查找的改進, 分爲查找表和索引表,查找表進行分塊,塊內可以無序,塊間必須有序,第二塊所有元素必須比第一塊大,用索引表,記錄塊的最大關鍵字和塊的起始地址。 ASL   log2(n/s+1)+s/2

 

 

 

軟考筆記

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章