function binaryInsertionSort (a)
{
var i, m;
var hi, lo, tmp;
var n = a.length;
for (i = 1; i < n; i++) {
lo = 0, hi = i;
m = Math.floor(i / 2);
do {
if (a[i] > a[m]) {
lo = m + 1;
} else if (a[i] < a[m]) {
hi = m;
} else
break;
m = Math.floor(lo + ((hi - lo) / 2));
} while (lo < hi);
if (m < i) {
tmp = a[i];
for (j = i - 1; j >= m; j--)
a[j + 1] = a[j];
a[m] = tmp;
}
}
return a;
}
//outputs [11, 40, 42, 66, 73, 90]
binaryInsertionSort([66, 73, 42, 40, 90, 11]);
Monday, June 24, 2013
JavaScript Binary Insertion Sort
I ported over the binary insertion sort algorithm from this blog post to JavaScript. The two changes I made were that I used Math.floor to truncate the floats when division occurs and replaced memmove() with a for-loop from one of the previous implementations in the post.
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment