題目:
無序數組求中位數。
解答:
利用快排的思想
1、先進行一趟快排,使得div左邊的值都比arr[div]小,div右邊的值都比arr[div]大,但是這個div的位置是不確定的,可能位於中間,也可能偏左或者偏右。
2、計算出mid所在的下標,如果是奇數則是mid=(size+1)/2,如果是偶數則是mid=size/2。
3、此時需要比較mid和div所在的位置。如果mid在div所在位置的左邊,此時就要遞歸去左半區間查找;如果mid在div的右邊,此時就要遞歸去右半區間查找;如果恰好相等則說明div/mid所在的位置就是中位數。