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