[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 03/23 22:14 / Filesize : 467 KB / Number-of Response : 1050
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

底辺私立医大を卒業した医者って頭悪いよね? Part8



358 名前:卵の名無しさん mailto:sage [2018/08/12(日) 08:49:17.88 ID:vzhZWzVW.net]
>>266
https://www.youtube.com/watch?v=Hoixgm4-P4M
に従ってpivotの選び方をmedian of threeにしてみた

med3 <- function(x){ # median of three(first, middle, last)
y=c(x[1],x[(length(x)/2)],x[length(x)])
mid=y[c(y[1]>=min(y[2],y[3])&y[1]<=max(y[2],y[3]),
y[2]>=min(y[3],y[1])&y[2]<=max(y[3],y[1]),
y[3]>=min(y[1],y[2])&y[3]<=max(y[1],y[2]))]
return(mid)
}

quicksort3 <- function (x) {
if (length(x) <= 1) return(x)
if (length(x) == 2) {
if (x[1] <= x[2]) return(x)
else return(x[2:1])
}
pivot=med3(x) # instead of pivot=sample(x,1)
return( c(quicksort3(x[x < pivot]), x[x == pivot], quicksort3(x[x > pivot])) )
}

結果は、ランダム抽出でのpivotにボロ負け


> system.time(quicksort3(1e6:1))
user system elapsed
15.90 0.03 15.96

> system.time(quicksort(1e6:1))
user system elapsed
4.10 0.02 4.13






[ 続きを読む ] / [ 携帯版 ]

全部読む 前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](;´∀`)<467KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef