Skip to content

Instantly share code, notes, and snippets.

@timakin
timakin / index.html
Created January 22, 2015 03:28
文系が学ぶコンピューターサイエンス:第1回【概要、バブルソート実装】 ref: http://qiita.com/timakin/items/4b93017a560c109e9ca6
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>JSALGO</title>
<script src="./lib/sort.js"></script>
</head>
<body>
</body>
</html>
@timakin
timakin / file0.txt
Last active August 29, 2015 14:13
文系が学ぶコンピューターサイエンス:第2回【クイックソート】 ref: http://qiita.com/timakin/items/b553b65de22e2bd4baa7
1 2 3 4 5 6
が正解なら、
6 5 4 3 2 1
のときが最悪。
一個一個前に持ってこなきゃいけない。
@timakin
timakin / file0.txt
Last active August 29, 2015 14:15
文系が学ぶコンピューターサイエンス╭( ・ㅂ・)و ̑̑:第3回【マージソート】 ref: http://qiita.com/timakin/items/18ab2a21a6b728ef30c2
// MergeSort
mergeSort: function(items){
var self = this;
// 受け取ったdata(配列)が、最小単位になるまで分割し続ける。
if (items.length < 2) {
return items;
}
var middle = Math.floor(items.length / 2),
@timakin
timakin / combSort
Created February 18, 2015 10:45
文系が学ぶコンピューターサイエンス╭( ・ㅂ・)و ̑̑:第4回【コームソート】 ref: http://qiita.com/timakin/items/ae7de80a635fa033126b
combSort: function(data) {
var N = data.length;
var gap = N;
while((gap > 1) || flag) {
// 収縮率(間隔調整の度合い)は1.3。
var gap = gap*10/13;
if (gap < 1) { gap = 1 };
var flag = 0;
@timakin
timakin / file0.js
Created February 19, 2015 14:17
文系が学ぶコンピューターサイエンス╭( ・ㅂ・)و ̑̑:第5回【選択ソート】 ref: http://qiita.com/timakin/items/29b69034a6747f7b5521
// 選択ソート。計算量O(n^2)。
selectionSort: function(data) {
var min;
for (var i = 0; i < data.length - 1; i++) {
// 先頭を最小値とする。
min = i;
// 先頭から順に、それより小さい値があった場合そのうち一番小さいものと交換する。
//
for (var j = i + 1; j < data.length; j++) {
@timakin
timakin / insertionSort
Created February 19, 2015 18:18
文系が学ぶコンピューターサイエンス╭( ・ㅂ・)و ̑̑:第6回【単純挿入ソート】 ref: http://qiita.com/timakin/items/a866ae8690752189b6d5
// 単純挿入ソート。最悪計算量O(n^2)。ループ回数から考えるとまあわかる。
insersionSort: function(data) {
// 最初から最後までソート完了になるまで繰り返す
var tmp, i;
for (var sorted = 0; sorted < data.length - 1; sorted++) {
// ソート完了している領域の直後の値を取り出す。
insert = data[sorted+1];
// ソート済みの中で、挿入できる場所があるかを調べる。
for (i = 0; i <= sorted; i++) {
if (data[i] > insert) {
@timakin
timakin / file0.txt
Last active August 29, 2015 14:15
JavaScriptのMathクラスの実装をV8エンジンソースから読み解く╭( ・ㅂ・)و ̑̑ ref: http://qiita.com/timakin/items/2b0436c60e43e78894a2
var $floor = MathFloor;
function MathFloor(x) {
x = TO_NUMBER_INLINE(x);
// It's more common to call this with a positive number that's out
// of range than negative numbers; check the upper bound first.
if (x < 0x80000000 && x > 0) {
// Numbers in the range [0, 2^31) can be floored by converting
// them to an unsigned 32-bit value using the shift operator.
// We avoid doing so for -0, because the result of Math.floor(-0)
@timakin
timakin / file0.js
Created February 22, 2015 07:33
文系が学ぶコンピューターサイエンス╭( ・ㅂ・)و ̑̑:第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;
@timakin
timakin / バイナリサーチ
Created March 4, 2015 09:36
文系が学ぶコンピューターサイエンス╭( ・ㅂ・)و ̑̑:第8回【リニアサーチ、バイナリサーチ】 ref: http://qiita.com/timakin/items/f4121db6f7dadb0472c2
// バイナリサーチ(2分探索)
// 基準点の前後を分けて探ることで、計算量をO(logN)に抑えることができる。
// バイナリサーチはあたいの大小を元に捜索するため、対象がソート済みの配列でなくてはならない。
binarySearch: function(data, target) {
var left = 0,
right = data.length - 1,
middle;
while(left <= right) {
// 基準点を毎回更新する。
@timakin
timakin / gist:1d4c781b1e508419f790
Last active August 29, 2015 14:19
PromiseTest
var request = require('request');
var gurl = 'http://google.com'
var yurl = 'http://yahoo.co.jp'
var testreq = function(url) {
return new Promise(function(resolve, reject) {
request(url, function (error, response, body) {
if (error) {
reject(err);
} else {
resolve(body);