Skip to content

Instantly share code, notes, and snippets.

@timakin
Created February 22, 2015 07:33
Show Gist options
  • Save timakin/1b35dd21d1b401b61ca7 to your computer and use it in GitHub Desktop.
Save timakin/1b35dd21d1b401b61ca7 to your computer and use it in GitHub Desktop.
文系が学ぶコンピューターサイエンス╭( ・ㅂ・)و ̑̑:第7回【2分挿入ソート】 ref: http://qiita.com/timakin/items/211bf914d7a137061d2f
// 2分挿入ソート
binaryInsertionSort: function(data) {
var left, right, mid, temp;
for (var sorted = 1; sorted < data.length; sorted++) {
var insert = data[sorted];
// ここからバイナリサーチ
    // どこに値を挿入するべきかを探す
left = 0;
right = sorted;
while (left < right) {
// Math.floor()使わないと、小数をキーに入れる羽目になる。
mid = Math.floor((left + right) / 2);
if (data[mid] > insert) {
right = mid;
} else {
left = mid + 1;
}
}
var i = left;
while(i <= sorted) {
temp = data[i];
data[i] = insert;
insert = temp;
i++;
}
}
return data;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment