/ ve * işleçlerini kullanmadan tamsayı bölme işlemi gerçekleştiren bir işlev yazınız. Bu işi hızlı yapsın.
Ali
--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]
Thread overview | |||||
---|---|---|---|---|---|
|
December 23, 2013 The Algorithm Design Manual, problem 1-28 | ||||
---|---|---|---|---|
| ||||
/ ve * işleçlerini kullanmadan tamsayı bölme işlemi gerçekleştiren bir işlev yazınız. Bu işi hızlı yapsın. Ali -- |
December 24, 2013 The Algorithm Design Manual, problem 1-28 | ||||
---|---|---|---|---|
| ||||
Posted in reply to Ali Çehreli (acehreli) | Bu işi "hızlı yapmayan" çözüm herhalde şöyle olur:
Yukarıdaki programın sorunu, sonucun büyüklüğü ile doğru orantılı zaman almasıdır! Bakalım:
Çıktısı dört katı büyük sonucu hesaplamak için dört katı zaman gerektiğini gösteriyor: 'süre 0: 805 ms Yani, bu algoritmanın karmaşıklığı O(sayı/bölen) kadar. Şimdiki amaç "bu işi hızlı yapmak". :) Ali -- |
December 25, 2013 The Algorithm Design Manual, problem 1-28 | ||||
---|---|---|---|---|
| ||||
Posted in reply to Ali Çehreli (acehreli) | Çözdüm. :)
Sonuçta O(log(sayı/bölen)) karmaşıklığında bir çözüm bulunmuş oldu.
Daha önce saniyeler süren main içindeki hesaplar artık milisaniye cinsinden ölçülemeyecek kadar küçük: :) 'süre 0: 0 ms -- |