diff --git a/src/rt/shell/fs/search.ts b/src/rt/shell/fs/search.ts index d032d81..92a53c0 100644 --- a/src/rt/shell/fs/search.ts +++ b/src/rt/shell/fs/search.ts @@ -1,5 +1,6 @@ interface Search { binary: (list: T[], find: T) => T | undefined, + binary_nsort: (list: T[], find: T, start: number, end: number) => T | undefined; linear: (list: T[], find: T) => T | undefined, } const search = {} as Search @@ -12,15 +13,22 @@ search.binary = function(list, find) { const median = (start+end)>>1 if (list[median] === find) { return find - } else if (list[median]end) { return } + const median = (start+end)>>1 + if (list[median] === find) { return list[median] } + if (list[median]>find) { + return this.binary_nsort(list, find, start, median-1) + } else { + return this.binary_nsort(list, find, median+1, end) + } +} + search.linear = function(list, find) { for (const item of list) { if (item === find) {