binary_nsort for no automatic sorting

This commit is contained in:
2025-02-25 19:03:10 -05:00
parent 9de5ddcfbf
commit db31f20d24

View File

@ -1,5 +1,6 @@
interface Search {
binary: <T>(list: T[], find: T) => T | undefined,
binary_nsort: <T>(list: T[], find: T, start: number, end: number) => T | undefined;
linear: <T>(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]<find) {
start = median+1
} else {
end = median-1
}
} else if (list[median]<find) { start = median+1 } else { end = median-1 }
}
return
}
search.binary_nsort = function(list, find, start = 0, end = list.length-1) {
if (start>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) {