單鏈表快速排序演算法實現

2021-06-17 20:17:07 字數 493 閱讀 2439

單鏈表結構:

typedef int elemtype;

typedef struct listnode* list;

struct listnode

;

實現**如下:

void quicksort( list head, list tail )

p->next = mid;

q->next = tail;

quicksort( head, mid );

quicksort( mid, tail );

}

呼叫時引數head為(帶頭節點的)單鏈表頭節點指標,tail為單鏈表尾節點的next指標指向的類容。通常情況下tail的內容為null,因此,呼叫時為quicksort(head, null)。

單鏈表的快速排序演算法及其實現

演算法思想 對於乙個鍊錶,以head節點的值作為key,然後遍歷之後的節點,可以得到乙個小於key的鍊錶和大於等於key的鍊錶 由此遞迴可以對兩個鍊錶分別進行快速。這裡用到了快速排序的思想即經過一趟排序能夠將小於key的元素放在一邊,將大於等於key的元素放在另一邊 面試回答 如果面試官問快速排序是...

單鏈表快速排序

今天在學習 程式設計師使用演算法 時,看到了單鏈表快排序這一節。初看時感覺程式有很大的問題,但是細細品味之後卻發現程式設計的極為巧妙,同時又深感自己c語言指標知識之不牢固,特別是指標的指標方面的知識。單鏈表的快排序和陣列的快排序基本思想相同,同樣是基於劃分,但是又有很大的不同 單鏈表不支援基於下標的...

單鏈表快速排序

今天在學習 程式設計師使用演算法 時,看到了單鏈表快排序這一節。初看時感覺程式有很大的問題,但是細細品味之後卻發現程式設計的極為巧妙,同時又深感自己c語言指標知識之不牢固,特別是指標的指標方面的知識。單鏈表的快排序和陣列的快排序基本思想相同,同樣是基於劃分,但是又有很大的不同 單鏈表不支援基於下標的...