Tuesday, 4 July 2017

Unrolled List In Java

Didn't write to much recently, being busy, but I got something for you: Unrolled Linked List in Java.
This is an Wikipedia article; in my implementation, there is no remove and insert function - it would complicate API too much, imo.
It has O(1) performance with: push, add, pop (removes the first) and popLast. Performance of:
- replace (updates element with the given index) and
- get (returns - not remove an element with the given index)
are O(n / [#of internal arrays]) - which is better (with max elements 1000 and n = million  would be 500) than pure Linked List and obviously worst than Augumented Array.
There is a bigger memory overhead per node: an array of elements plus some helper fields; for million integers, there would be around 1600 bytes overhead plus whatever comes from arrays management.
Where to use it? Any queues, stacks, et cetera, especially when we do lots of insertions and lookups at the front - in that case ArrayList is much slower. Code as usually on github. Till the next time!

Wednesday, 21 June 2017

Java Calculator 2

Following previous post, I've fixed this - now is not nessessery to use fully paranthized expression; the operator precedence is set and can be changed using paranthesis. Instead of binary tree, I parsed expression to postfix - Reverse Polish Notation Rocks :).
Code, of course, on Github. Till the next time!

Monday, 12 June 2017


Trying to get new skills: objective programming, I've started to code in Java. The simple project: Calculator. Expression string is parsed to Binary Abstract Syntax Tree and then recursively evaluated.
Code on Github. Till the next time!

Wednesday, 17 May 2017

Thursday, 30 March 2017

New Class in C++ Biginteger Library!

I've started developing a C++ wrapper for GMP - high precision arithemtic library in C; updates on github today - bigrationals added! Only basic functions for now, but development in progress:)

Thursday, 23 March 2017

C++ GMP Wrapper

Recently beeing busy - writing, in C++, wrapper for GMP LibraryCode here - you are invited to improve it!:)