数据结构和算法(对生活的抽象)

数据结构和算法

什么是数据结构?
计算机中,存储和组织数据的方式
数据的组织方法对效率影响很大

数据结构类型:
队列


数组

链表

散列表

什么是算法(Algorithm)?
不同的算法,执行效率不一样
一个有限指令集,每条指令的描述不依赖于语言
数据结构的实现离不开算法
(解决一个问题的方法步骤就是这个问题的算法)

具体数据结构介绍

数组

  • 熟悉数组ApI的调用 数组是一种线性结构,并且可以在数组的任意位置 插入和删除数据

    是一段一段的内存,扩容、插入和删除元素的操作耗时 数组通过下标来去取元素和修改元素的效率很高

栈结构

  • 栈是一种基于数组实现的非常常见的数据结构,并且在程序中应用十分广泛
  • 数组可以在任意位置进行删除和修改,但是为了实现某些功能,必须对其进行限制,其中栈和队列就是比较常见的受限的线性结构
  • 栈只能进行一端进行添加和删除操作(后进先出)数据结构和算法(对生活的抽象)_第1张图片
    - 题目解析:
  • c(边进栈,边出栈)
  • 在这里插入图片描述
    通过代码进行栈结构
    1.基于数组实现
    2.基于链表实现
//利用数组进行栈的封装
<script>
function Stack(){
this.items=[];
stack.prototype.push=function(){
this.items.push(element)}
}//封装栈类
var s=new Stack();
s.push()
</script>

相关操作:
数据结构和算法(对生活的抽象)_第2张图片
**栈的应用:**将十进制转换为二进制:

function dtb(dec){
var stack = new Stack();
while(dec>0){
stack.push(dec%2);//压入栈中
dec=Math.floor(dec/2)}
}
var bins="";
while(!stack.isEmpty(){
bins+=stack.pop()
}
return bins;
alert(dtb(1000))//测试是否可以实现

队列结构:

先进先出
队列也是一种受限的线性表,先进先出
受限之处在于它只允许在表的前端进行删除操作
表的后端进行插入操作

队列常见操作数据结构和算法(对生活的抽象)_第3张图片

队列面试题(击鼓传花)

function game(name,num){
//创建一个队列结构
var queue = new Queue();
for(var i=0;i<name.length;i++){
queue.enqueue(name[i])}
//开始数数,不是num这个数字的时候,将其重新加入到队列的末尾,是num的时候,将其从队列中删除;
while(queue.size()>1){
for(var i=0;i<num-1;i++){
queue.enqueue(queue.dequeue()}
}
queue.dequeue()
var endname=queue.front()
return endname;
}

}

优先级队列

你可能感兴趣的:(js,算法)