/*** 快速排序
* @param
$arr
* @return
array
*/$arr自定義乙個陣列,先得到該陣列的長度,定義乙個left陣列 ,right陣列,注意這必須判斷陣列長度,如果小於1就讓他直接返回,不然引用會報錯,外層乙個for迴圈
是判斷陣列長度,用$arr第乙個數字跟第二個數字對比,如果大於第二個數字,把它放在left這個陣列裡面,如果小於放在right裡面,迴圈一輪之後會得到left和right
這兩個陣列,再用這個陣列呼叫自己定義的gosort方法進行迴圈,之後拼接陣列。注意:$arr[0]不是陣列,需要轉換為陣列。
function
gosort(
$arr
)for($i
=1;$i
<
$len;$i
++)else
}$left
=gosort(
$left
);// return $left;
$right
=gosort(
$right
);return
array_merge
($left
,array
($arr[0
]),$right
);}
快速排序的寫法
面試中乙個頻率極高的問題就是要手寫快速排序,實際上涉及下標變換的 極其容易寫錯,基本上涉及整數下標操作的問題都算是難度中等偏上的了。對於一些經典問題,我們要時不時的去練習,這裡給出演算法導論上的和stl中實現的快速排序的兩種不同寫法。template size t partition t a,siz...
快速排序 思路理解
與歸併排序一樣,快速排序也是乙個分治演算法,需要選擇乙個基準 第乙個元素,最後乙個元素,隨機乙個元素 以此基準作為劃分 快速排序的關鍵是劃分partion 每一趟劃分,我們就可以將作為基準值 x 放到排序陣列的正確位置,並且將所有比 x 小的放到 x 的左邊,所有比 x 大的元素放到 x 的右邊。c...
快速排序的簡潔寫法
個人總結的兩種寫法,比較傾向於partition1,乙個邊界畢竟比兩個邊界好控制。此處 基於c 其實也就是用了個vector而已,隨便改改其他語言都可以。好多寫法都可以滿足普通情況,但不滿足特殊用例測試 1,1,1,3這種。共享。include stdafx.h include iostream i...