npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

datastructures-algorithms-ts

v0.0.9

Published

常用的数据结构与算法typescript实现

Downloads

1

Readme

数据结构与算法

  1. 常用的数据结构与算法typescript实现
  2. npm => https://www.npmjs.com/package/datastructures-algorithms-ts
  3. github => https://github.com/jarrett-k/datastructures-algorithms-ts
  4. 数据结构

一种遵从后进先出(LIFO)原则的有序集合。新添加或待删除的元素都保存在栈的同一端,称作栈顶,另一端就叫栈底。在栈里,新元素都靠近栈顶,旧元素都接近栈底。

import { Stack } from 'datastructures-algorithms-ts'

const stack = new Stac<number>k()

stack.push(...[1,2,3]) 
stack.push(4)
  • push(element(s)):添加一个(或几个)新元素到栈顶。
  • pop():移除栈顶的元素,同时返回被移除的元素。
  • peek():返回栈顶的元素,不对栈做任何修改(该方法不会移除栈顶的元素,仅仅返回它)。
  • isEmpty():如果栈里没有任何元素就返回 true,否则返回 false。
  • clear():移除栈里的所有元素。
  • size():返回栈里的元素个数。
  • toString(): 返回栈里的内容的字符串表现形式。

队列

普通队列

普通队列是遵循先进先出(FIFO,也称为先来先服务)原则的一组有序的项。队列在尾部添加新元素,并从顶部移除元素。最新添加的元素必须排在队列的末尾。

import { Queue } from 'datastructures-algorithms-ts'

const queue = new Queue<number>()

queue.enqueue(...[1,2,3]) 
queue.enqueue(4)
  • enqueue(element(s)):向队列尾部添加一个(或多个)新的项。
  • dequeue():移除队列的第一项(即排在队列最前面的项)并返回被移除的元素。
  • peek():返回队列中第一个元素。队列不做任何变动(不移除元素,只返回元素信息)。
  • isEmpty():如果队列中不包含任何元素,返回 true,否则返回 false。
  • clear():移除队列里的所有元素。
  • size():返回队列包含的元素个数,与数组的 length 属性类似。
  • toString(): 返回栈里的内容的字符串表现形式。

双端队列

双端队列(deque,或称 double-ended queue)是一种允许我们同时从前端和后端添加和移除元素的特殊队列。

import { Queue } from 'datastructures-algorithms-ts'

const queue = new Queue<number>()

queue.enqueue(...[1,2,3]) 
queue.enqueue(4)
  • addFront(element):该方法在双端队列前端添加新的元素
  • addBack(element):该方法在双端队列后端添加新的元素
  • removeFront():该方法会从双端队列前端移除第一个元素
  • removeBack():该方法会从双端队列后端移除第一个元素
  • peekFront():该方法返回双端队列前端的第一个元素
  • peekBack():该方法返回双端队列后端的第一个元素)。
  • isEmpty():如果队列中不包含任何元素,返回 true,否则返回 false。
  • clear():移除队列里的所有元素。
  • size():返回队列包含的元素个数,与数组的 length 属性类似。
  • toString(): 返回栈里的内容的字符串表现形式。

链表

链表存储有序的元素集合,但不同于数组,链表中的元素在内存中并不是连续放置的。每个元素由一个存储元素本身的节点和一个指向下一个元素的引用(也称指针或链接)组成。

import { LinkedList } from 'datastructures-algorithms-ts'

const list = new LinkedList<number>()
list.push(1)
  • push(element):向链表尾部添加一个新元素。
  • insert(element, position):向链表的特定位置插入一个新元素。
  • getElementAt(index):返回链表中特定位置的元素。如果链表中不存在这样的元素,则返回 undefined。
  • remove(element):从链表中移除一个元素。
  • indexOf(element):返回元素在链表中的索引。如果链表中没有该元素则返回-1。
  • removeAt(position):从链表的特定位置移除一个元素。
  • isEmpty():如果链表中不包含任何元素,返回 true,如果链表长度大于 0则返回 false。
  • size():返回链表包含的元素个数,与数组的 length 属性类似。
  • toString():返回表示整个链表的字符串。

冒泡排序

冒泡排序比较所有相邻的两个项,如果第一个比第二个大,则交换它们。元素项向上移动至正确的顺序,就好像气泡升至表面一样,冒泡排序因此得名。

import { bubbleSort } from 'datastructures-algorithms-ts'

bubbleSort<number>([1,2,3], (a, b) => { Math.random() > 0.5 ? 1 : -1 }