binary_nsort
for no automatic sorting
This commit is contained in:
@ -1,5 +1,6 @@
|
|||||||
interface Search {
|
interface Search {
|
||||||
binary: <T>(list: T[], find: T) => T | undefined,
|
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,
|
linear: <T>(list: T[], find: T) => T | undefined,
|
||||||
}
|
}
|
||||||
const search = {} as Search
|
const search = {} as Search
|
||||||
@ -12,15 +13,22 @@ search.binary = function(list, find) {
|
|||||||
const median = (start+end)>>1
|
const median = (start+end)>>1
|
||||||
if (list[median] === find) {
|
if (list[median] === find) {
|
||||||
return find
|
return find
|
||||||
} else if (list[median]<find) {
|
} else if (list[median]<find) { start = median+1 } else { end = median-1 }
|
||||||
start = median+1
|
|
||||||
} else {
|
|
||||||
end = median-1
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return
|
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) {
|
search.linear = function(list, find) {
|
||||||
for (const item of list) {
|
for (const item of list) {
|
||||||
if (item === find) {
|
if (item === find) {
|
||||||
|
Reference in New Issue
Block a user