相比較線性表的排序而言,鍊錶排序的內容稍微麻煩一點。一方面,你要考慮資料插入的步驟;另外一方面你也要對指標有所顧慮。要是有一步的內容錯了,那麼作業系統會馬上給你彈出乙個exception。就鍊錶的特殊性而言,適合於鍊錶的排序有哪些呢?
(1)插入排序 (適合)
(2)氣泡排序 (適合)
(3)希爾排序 (適合)
(4)選擇排序 (適合)
(5)快速排序 (不適合)
(6)合併排序 (不適合)
(7)基數排序 (不適合)
(8)堆排序 (不適合)
其實,一般來說。如果涉及到資料之間的相對關係調配,那麼只適合線性排序;如果只是資料內容之間的相互交換,那麼這種排序方法也比較適合鍊錶的排序。快速排序、合併排序、堆排序都涉及到了中間值的選取問題,所以不大適合鍊錶排序。
為了說明鍊錶排序是怎麼進行的,我們可以利用插入排序作為示例,描述鍊錶是怎麼進行插入排序的。
a)首先遍歷節點,一邊是排序好的節點,一邊是待排序的節點
void sort_for_link_node(node** ppnode)
return;
}
b)對於待插入的節點,選擇合適的位置插入即可
void insert_for_sort_operation(node** ppnode, node* pnode)
cur = *ppnode;
while(cur)
pnode->next = prev->next;
prev->next = pnode;
return;
}
一步一步寫演算法(之鍊錶排序)
相比較線性表的排序而言,鍊錶排序的內容稍微麻煩一點。一方面,你要考慮資料插入的步驟 另外一方面你也要對指標有所顧慮。要是有一步的內容錯了,那麼作業系統會馬上給你彈出乙個exception。就鍊錶的特殊性而言,適合於鍊錶的排序有哪些呢?1 插入排序 適合 2 氣泡排序 適合 3 希爾排序 適合 4 選...
一步一步寫演算法(之鍊錶排序)
原創 相比較線性表的排序而言,鍊錶排序的內容稍微麻煩一點。一方面,你要考慮資料插入的步驟 另外一方面你也要對指標有所顧慮。要是有一步的內容錯了,那麼作業系統會馬上給你彈出乙個exception。就鍊錶的特殊性而言,適合於鍊錶的排序有哪些呢?1 插入排序 適合 2 氣泡排序 適合 3 希爾排序 適合 ...
一步一步寫演算法(之鍊錶排序)
相比較線性表的排序而言,鍊錶排序的內容稍微麻煩一點。一方面,你要考慮資料插入的步驟 另外一方面你也要對指標有所顧慮。要是有一步的內容錯了,那麼作業系統會馬上給你彈出乙個exception。就鍊錶的特殊性而言,適合於鍊錶的排序有哪些呢?1 插入排序 適合 2 氣泡排序 適合 3 希爾排序 適合 4 選...