Below you will find pages that utilize the taxonomy term “数据结构”
October 19, 2018
数据结构与算法
"平时开发中,一般很少用到手动来写算法的情况,但实际上我们一直在接触一些数据结构与算法,如JAVA中的ArrayList 就用到了数据结构与算法,从名字可以看到了用到了Array这种数组结构和链表结构。下面根据目前学习的情况做一个总结。\n数据结构\n我们常见的数组结构一般有:\nArray数组、 Stack栈、 Heap堆、 Queue队列 Hash 哈希类型 LinkedList 链表,其中又分为单向链表、双向链表、还有最少用的环形链表 Tree 这个Tree分的太多了,如B-Tree、 B+Tree(mysql使用)、Binary Search Tree二叉搜索树 、AVL高度平衡树、Red Black Tree红黑树 等 http://www.bigocheatsheet.com/\n算法\n一般开发中用到的基本上排序算法居多,而算法大体上又分为比较排序和非比较排序。我们常用的比较排序算法有(参考: http://www.cnblogs.com/eniac12/p/5329396.html):\n快速排序 (Quick Sort) 冒泡排序 (Bubble Sort) …"
October 13, 2018
Heap And Stack 堆与栈的区别
"堆与栈的区别\n推荐: https://www.programmerinterview.com/index.php/data-structures/difference-between-stack-and-heap/\n栈是上下顺序存储的,且“先进后出LIFO”规则,只能删除顶部的元素,而堆是没有特定的顺序的存储,您可以删除任意元素。堆分配需要维护分配的内存和未分配的内存的完整记录,以及一些开销维护以减少碎片,找到足够大以适应请求大小的连续内存段,等等。内存可以随时释放,留出自由空间。有时,内存分配器将执行维护任务,比如通过将分配的内存到处移动来对内存进行碎片整理,或者在运行时进行垃圾收集——当内存不再处于作用域中时对其进行标识并释放它。\n栈用在线程中,程序执行时由线程创建有限数量的栈空间,当线程结束的时候会自动回收,属于系统级。 堆一般是由应用程序在启动时创建,由应用程序回收,属于应用级。 The stack is attached to a thread, so when the thread exits the stack is reclaimed. The heap is …"