algorithmInJS
1.0.0
用於封裝Node.js的常用算法的集合
用打字稿編寫,以簡單地編寫平滑代碼
為了實現各種更常見的算法,可以長期維護圖書館,同時也見證了JS的魅力
該圖書館僅適用於自學和討論,請不要在生產環境中使用
該庫使用MIT協議,歡迎提交拉動請求
npm i algorithminjs -D
在節點中使用
let algorithminjs = require ( 'algorithminjs' )
// import form
import algorithmInJS from 'algorithminjs'使用arrayqueue.ts陣列隊列
let { ArrayQueue } = require ( '../index' )
let arrayQueue = new ArrayQueue ( 8 )
//enqueue
console . log ( 'enqueue::' , arrayQueue . enqueue ( 'a' ) )
console . log ( 'arrayQueue:' , arrayQueue )
console . log ( 'enqueue::' , arrayQueue . enqueue ( 'b' ) )
console . log ( 'arrayQueue:' , arrayQueue )
// dequeue
console . log ( 'dequeue:' , arrayQueue . dequeue ( ) )
console . log ( 'dequeue show :' , arrayQueue )使用arraystack.ts陣列堆棧
let { ArrayStack } = require ( '../index' )
let arrayStack = new ArrayStack ( 5 )
console . log ( arrayStack . push ( 4 ) )
console . log ( arrayStack . items )
expect ( arrayStack . items ) . to . be . a ( 'array' )使用binarysearch.ts二進制搜索
let { BinarySearch } = require ( '../index' )
let a = [ 11 , 10 , 9 , 8 , 7 , 6 , 5 , 4 , 3 , 2 , 1 ] . reverse ( )
let n = a . length
let val = 8
let bs = new BinarySearch ( )
console . log ( 'bs' , bs )
let result = bs . bsearchInternally ( a , 0 , n - 1 , val )
console . log ( 'result:' , result )使用Circlequeue.ts循環隊列
let { CircleQueue } = require ( '../index' )
let circleQueue = new CircleQueue ( 8 )
console . log ( 'circleQueue:' , circleQueue . enqueue ( 'jame' ) )
console . log ( 'circleQueue:' , circleQueue . enqueue ( 'tom' ) )
console . log ( 'circleQueue:' , circleQueue . enqueue ( 'jerry' ) )
console . log ( 'circleQueue:' , circleQueue )按Countingsort.ts計數排序
let { CountingSort } = require ( '../index' )
// let mergeSort = new MergeSort()
var a = [ 11 , 10 , 9 , 8 , 7 , 6 , 5 , 4 , 3 , 2 , 1 ]
var n = a . length
Console . time ( 'countingSort' )
CountingSort . countingSort ( a , n )
// quickSort.mergeSortInternally(a, 0)
console . timeEnd ( 'countingSort' )
console . log ( 'array:' , a )使用HEAP.TS堆算法實現
Mergesort.ts合併排序算法
let { MergeSort } = require ( '../index' )
// let mergeSort = new MergeSort()
var a = [ 1 , 23 , 45 , 56 , 2 , 3 , 34 , 22 ]
var n = a . length
Console . time ( 'mergeSort' )
var mergeSort = new MergeSort ( a , n )
mergeSort . mergeSortInternally ( a , 0 )
console . timeEnd ( 'mergeSort' )
console . log ( 'array:' , a )使用節點實施。 TS二進制樹節點算法
let { Nodes } = require ( '../index' )
var node1 = new Nodes ( 5 )
Node1 . insert ( 2 )
Node1 . insert ( 4 )
console . log ( node1 )
// delete
Console . time ( 'delete' )
Node1 . delete ( 3 )
console . timeEnd ( 'delete' )
console . log ( 'deleted::' , node1 )使用QuickSort.ts快速排序算法實施
let { QuickSort } = require ( '../index' )
// let mergeSort = new MergeSort()
var a = [ 11 , 10 , 9 , 8 , 7 , 6 , 5 , 4 , 3 , 2 , 1 ]
var n = a . length
Console . time ( 'mergeSort' )
var quickSort = new QuickSort ( a , n )
// quickSort.mergeSortInternally(a, 0)
console . timeEnd ( 'mergeSort' )
console . log ( 'array:' , a )用syncpromise.ts異步邏輯同步隊列算法實現
let { SyncPromise } = require ( '../index' )
let syncPromise = new SyncPromise ( )
console . log ( syncPromise )
let self = this
Const a = ( option ) => {
Return new Promise ( ( resolve , reject ) => {
console . log ( option )
Resolve ( option )
}
)
}
let ids = [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ]
Function method ( option ) {
Return ( callback ) = > {
a ( option ) . then ( data => {
Callback ( null , data )
} )
}
}
let arrayOfCallback = ids . map ( id => {
Return method ( id )
} )
syncPromise . seriesOfArray ( arrayOfCallback )
expect ( arrayOfCallback ) . to . be . a ( 'array' )使用util.ts助手功能
let { Util } = require ( '../index' )
let testUrl = 'https://translate.google.com/?view=home&op=translate&sl=en&tl=zh-CN&text=what%20i%20want%20to%20do%20is%20that'
let getJSON = Util . url2json ( testUrl )
console . log ( "getJSON:" , getJSON )
expect ( getJSON ) . to . be . a ( 'object' ) let { Util } = require ( '../index' )
let testObj = {
View : 'home' ,
Op : 'translate' ,
Sl : 'en' ,
Tl : 'zh-CN' ,
Text : 'what i want to do is that'
}
let getUrl = Util . json2url ( testObj )
console . log ( 'getUrl::' , getUrl )