Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #encoding:utf-8
- def sirasiz_buyuk_sayi_arama(array,a) # a => aranacak elemanın büyüklük sırası
- pivot = array.sample
- rightarray = []
- leftarray = []
- if a == array.size
- return array.max
- end
- for i in array
- if pivot < i
- rightarray << i
- elsif pivot >= i
- leftarray << i
- end
- end
- if leftarray.size >= a
- if leftarray.uniq.length ==1 && leftarray.size > 1
- print "1\n"
- return pivot
- end
- return sirasiz_buyuk_sayi_arama(leftarray,a)
- elsif leftarray.size < a
- return sirasiz_buyuk_sayi_arama(rightarray,a - leftarray.size)
- end
- if leftarray.size +1 == a
- return pivot
- end
- end
- #+++++++++++++++++++++++++++MAİN+++++++++++++++
- array = ARGV[0].split(",").map(&:to_i)
- if array.size % 2 == 1
- print "Bu dizinin medyan değeri:#{sirasiz_buyuk_sayi_arama(array,array.size/2 +1)}\n"
- else
- a = sirasiz_buyuk_sayi_arama(array,array.size/2)
- b = sirasiz_buyuk_sayi_arama(array,array.size/2 +1)
- print "Bu dizinin medyan değeri:#{(a+b)/2.to_f}\n"
- end
- #[17,46,17,68,5,109,78,43,55,55,28] örnek dizi
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement