演算法導論中對於快速排序求中間值演算法的疑惑

2021-05-24 07:47:04 字數 568 閱讀 2939

public double medianof3(int left, int right)

int center = (left+right)/2;

// order left & center

if( thearray[left] > thearray[center] )

swap(left, center);

// order left & right

if( thearray[left] > thearray[right] )

swap(left, right);

// order center & right

if( thearray[center] > thearray[right] )

swap(center, right);

swap(center, right-1); // put pivot on right

return thearray[right-1]; // return median value

} // end medianof3()

為什麼返回值是thearray[right-1]?

快速排序 演算法導論

對於包含n個數的輸入陣列來說,快速排序是一種最壞情況時間複雜度為o n 的排序演算法。雖然最壞情況時間的複雜度很差,但是快速排序通常是實際排序應用中最好的選擇,因為它的平均效能非常好 它的期望時間複雜度是o nlgn 而且o nlgn 中隱含的常數因子非常小,另外,它還能夠進行原址排序,甚至在虛存環...

演算法導論 快速排序

既然敢叫 快速排序 必然有其過人之處。事實上,它確實是最快的通用內部排序演算法。它由hoare於1962年提出,相對歸併排序來說不僅速度快,並且不需要輔助空間。對於包含n個數的輸入陣列來說,快速排序是一種最壞情況時間複雜度為o n 2 的排序演算法。雖然最壞情況時間複雜度差,但是快速排序通常是實際排...

《演算法導論》 快速排序

最近和朋友聊天,聊到企業面試時考了一道鍊錶的快排,這道題在leetcode上也刷到過,而且對於陣列的快排,真是從大學到研究生一直都要求必須掌握的重點知識,然而自己不斷的思考,卻發現所謂的快排,比我以前想象的要複雜的多,因為快排的思想非常幹練,但是形式,或者說具體實現千變萬化,為了達到萬變不離其宗,筆...