1.链表:在链表中每一项中前一个是数值,后一个是next指针,这个指针指向的是下一个项的值,在你想要在整个链表中添加或者删除项的时候,就是改变指针的指向
2.栈 :符合数据项是先进后出
队列:符合数据项是先进先出 类似于现实中排队
3.二叉树:在走二叉树的流程的时候有三种方法:
先序(根左右) 中序(左根右) 后序(左右根)
这里面可以看一下这个二叉树
======================================
1、冒泡排序:
冒泡算法的原理就是:两个之间进行对比,如果前一个比后一个大,则这两个进行交换;反之,不交换;第一次对比完成之后,所有数中最大的一个一定在最后面;然后对比数组长度个次数;这样就成功的实现所有的数字从小到大进行排列了;
var arr = [3, 4, 1, 9, 6, 2, 5]; var temp; for (var i = 0; i < arr.length; i++) { for (var j = 0; j < arr.length; j++) { if (arr[j + 1] < arr[j]) { temp = arr[j + 1]; arr[j + 1] = arr[j]; arr[j] = temp; } } } console.log(arr)
2、选择排序
首先在末排序序列中找到最小的元素,存放到排序序列的起始位置,然后在从剩余未排序元素中继续寻找最小的元素,然后放到已排序序列的末尾
var arr = [3, 4, 1, 9, 6, 2, 5]; var min; var temp; for (var i = 0; i < arr.length - 1; i++) { min = arr[i]; for (var j = i + 1; j < arr.length; j++) { if (arr[j] < min) { temp = min; min = arr[j]; arr[j] = temp; } } arr[i] = min; } console.log(arr)
3、快速排序 是目前中比较快速的排序方法
快速排序就是先是设置两个指针 一个是0 一个是最后的那一个。然后以0对应的那个值为标准,将大于这个数的放到右边 小于这个数的放到左边,等循环完之后,这还不是最后的结果;
然后将这个值的左边的重复上面的操作。这个值右边的重复上面的操作;这就完成了,从小到大的排序。
var arr=[1,7,2,3,5,9,6]; function sort(arr){ //如果数组只是一个 if(arr.length<=1){return arr;} //获取到数组的中间一个项 var quiotIndex=Math.floor(arr.length/2); var quiot=arr.splice(quiotIndex,1)[0]; //左边和右边的 var left=[]; var right=[]; //循环 将小的放在左边 大的放在右边 for(var i=0;i<arr.length;i++){ if(arr[i]<=quiot){ left.push(arr[i]) }else{ right.push(arr[i]) } } //递归 return sort(left).concat(quiot,sort(right)) } console.log(sort(arr))