本次選做題目為:Kth Largest Element in an Array,題目要求為給定一段有序或無序的鏈表並用分而治制的方法求出鏈表中第二大的內容。
For example,
Given [3,2,1,5,6,4]
and k = 2, return 5.
在構思這道題目的時候,首先採用對鏈表進行排序,我所採用排序方法為快速排序,在求出有序鏈表中第二大的項目。
下面代碼為本次使用快速排序的模塊。透過遞歸,我們可以設計一個快速排序的開始函數void quickSort()的函數
,在函數中調用一個int partition()函數,此函數對鏈表中作一個分類,將小於支點的內容方在支點左側,大於等於則置於右側,最後返回支點在新鏈表中的位置。
下為主函數與int find()函數(返回第二大內容)
下為執行結果: