面試演算法題 單鏈表的快速排序實現

2021-06-21 22:03:08 字數 1062 閱讀 3669

面試時被問到單鏈表快速排序的問題,回來仔細實現下,面試時細節沒有處理好只說出來一些思想。本人菜鳥請大家指教。

#include using namespace std;

typedef struct linklist

*listpoint;

void quicksort(linklist *head,linklist * tail)

//p 連線的是比mid 小的值的鍊錶,q連線是比mid 大值的鍊錶並且包括mid

listpoint mid=head->next;

listpoint p=head;

listpoint q=mid;

listpoint t=mid->next;

int pivot=mid->key;

while (t!=tail)

else

t=t->next;

} // p鍊錶連線上q鍊錶

p->next=mid;

q->next=tail;//q鍊錶尾部指向null

quicksort(head,mid);//遞迴呼叫quicksort

quicksort(mid,tail);

}void printlist(listpoint head)

cout

listpoint node=new linklist;

node->key=val;

node->next=null;

p->next=node;

return head;

}int main()

; listpoint head=new linklist;

head->next=null;

//建立帶頭結點的鍊錶,head 中不儲存數值

for (int i=0;i<8;i++)

printlist(head);

cout<

quicksort(head,null);// tail 指向null

printlist(head);

return 0;

}

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

單鏈表結構 typedef int elemtype typedef struct listnode list struct listnode 實現 如下 void quicksort list head,list tail p next mid q next tail quicksort head...

面試 演算法 單鏈表逆序輸出法

陣列法,遍歷鍊錶每個元素存陣列,然後逆序遍歷陣列輸出 頭插法,遍歷鍊錶將遍歷到的元素插入煉表頭,然後重新遍歷鍊錶輸出 棧輸出,遍歷鍊錶將每個元素存入棧中,然後將棧元素全部出棧輸出 遞迴法,遍歷鍊錶,非未節點則繼續遞迴 陣列法實現核心 int array rever n head 輸出 for i l...

java面試演算法之快速排序

created by luo on 2017 9 2.public class quicksort int partition partition arr,first,last 獲取基準值所在陣列的位置,並對左右進行大小區分 quicksort arr,first,partition quickso...