【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>
栈的知识点学习:
使用栈首先需要创建栈对象:Stack stack = new Stack();
栈的基本方法:
置空栈:InitStack(s);
判栈空:StackEmpty(s);
判栈满:StackFull(s);
进栈(在栈中插入或者添加):Push(s,x); //进栈的元素都是排在栈顶的
出栈(删除栈中的元素):Pop(s);删除栈顶的数据,并且返回。栈为空删除则会溢出。
取栈顶元素GetTop(s);栈为空会报溢出错误。
时间复杂度:为什么链表的时间复杂度是O(n)呢?而数组的是O(1)呢?
时间复杂度:就是一个算法执行需要消耗的时间。是这个算法每条语句的执行时间之和。
每条语句的执行时间就是这条语句执行的次数 * 执行的一次的时间之和。
(例如数组和链表:10个数据进行查找和修改,数组只执行一次即可,时间为10秒。而链表需要通过指针依次执行,若该值在第九位则执行了九(n)次,时间为90秒)。
链表和数组的性质区分:
数组是静态数据结构,链表是动态数据结构。
由于链表是空间不连续的,所以链表查找值是需要从头或者尾依次访问判断,语句需要执行n次。不像数组是在一块连续空间,语句只执行1次。
从具体实现上来看:链表是在不连续的空间内,需要靠指针来依次递进的判断来获取,数组是在一块连续的空间内,只需要访问一次即可得到想要获取的元素。
结论:链表需要靠指针依次访问和判断,所以执行了n次,所以时间复杂度是O(n),而数组则是在一块连续的空间进行判断。不论数组多长都只需要执行一次,时间复杂度为O(1)。
来源:oschina
链接:https://my.oschina.net/u/4432600/blog/3154908