几种常见算法
- 算法演示
冒泡排序 (Bubble Sort)
有个数组a=[5,4,1,3,2,6],从小到大排序,总共进行a.length-1轮,首先将a[0]和a[1]比较,谁大就把谁放在后面,交换完后再将a[1]和a[2]比较,谁大就把谁放在后面…..一直到a[4]和a[5]比较,进行完第一轮后,最大的那个就已经放在最后一位了,接下来再重新从a[0]开始……直到进行到a[3]和a[4]比较(a[5]上一轮已经确定了最大的,不用再动了),一直进行,最后再比较一次a[0],a[1],排完a[0],a[1]的顺序,a数组的顺序就排好了~选择排序 (Selection Sort)
选出最小的和第一位交换位置,第一位就被确定了,接下来找倒数第二小的和第二位换位置,接着再找倒数第三小的和第三位换位置……一直找到最后一位插入排序 (Insertion Sort)
从数组的第二个开始,和第一个比较并排顺序,接着拿第三个和第二个比,若比第二个大则直接不动,若比第二个小则和第一个比,若比二小比一大则插在它们中间,若比第一个小则放在第一个,接着再拿第四个分别和三、二、一
比…….直到最后。- 随机快排
- 计数排序
- 桶排序
- 基数排序 (Radix Sort)
- 堆排序
- 归并排序
数据结构入门
- 哈希(Hash)
计数排序中的桶就是hash,hash的意思就是一个key对应一个value,如:
数组也是hash:a[0]=1,a[1]=2,……
对象也是hash 队列
先进先出,和排队一样栈
先进后出,和队列相反链表
let a = {
value:1,
next:{
value:2,
next:{
value:3
}
}
}
- 树
html就是一种树
二叉树每个节点最多有两个分支,被称为左子树和右子树