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