数据结构与算法
董小花
“我见过许多优秀的人,却没见过天才。人人都能看到他们的光芒,走近了,才看得到,他们值得拥有光芒。”
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
链表
一.常见的缓存淘汰策略:1.先进先出策略FIFO2.最少使用策略LFU3.最近最少使用策略LRU二.链表(一)链表的定义:链表是物理存储单元上非连续的、非顺序的存储结构,它由一个个结点,通过指针联系起来的,每个结点包括数据和指针。(二)链表结构:1.单链表通过“指针”将一组零散的内存块串联起来使用。内存块称为结点;记录下个结点地址的指针称为后继指针next;第一个结点为头结点,用来...原创 2020-03-24 17:47:07 · 312 阅读 · 0 评论 -
java实现插入排序
1.空间复杂度是 O(1),是原地排序算法2.时间复杂度:最好情况O(n),最坏O(n2),平均O(n2)3.插入排序是稳定的排序算法/** * 1.从第二个元素开始遍历,称为未排序元素 * 2.从未排序元素往前依次比较 * 3.如果未排序元素<已排序元素 * 4.已排序元素后移一位,未排序元素占据原来已排序元素的位置 * @param arr...原创 2020-03-24 17:41:59 · 198 阅读 · 0 评论 -
java实现快速排序
1.最好情况时间复杂度为O(nlogn),最坏情况时间复杂度为O(n^2),平均时间复杂度为O(nlogn)2.没有额外申请内存空间,空间复杂度为O(1),是原地排序算法3.不是稳定的排序算法,比如[1, 9, 1, 8, 9, 3, 7],运用方法2,当j指向元素3时,i指向第一个9,此时i和j交换,第一个9会换到第二个9的后面,前后位置改变了(稳定性:一组数中相同的两个数,排序完成后前后...原创 2020-03-24 17:40:13 · 149 阅读 · 0 评论 -
java实现选择排序
1.时间复杂度O(n^2)2.空间复杂度O(1),所以为原地排序算法3.不稳定 如[3,6,3,1,5],第一次3和1交换后,第一个3交换到了第二个3的后面public static void selectSort(int[] arr){ //最开始除第一个元素外为未排序区间 for (int i = 0; i < arr.length-1; i++)...原创 2020-03-24 17:38:46 · 152 阅读 · 0 评论 -
数组
1.数组概念:是一种线性表结构。用一组连续的内存空间来存储一组具有相同类型的数据。2.例:int [ ] a = new int[10]计算机给数组a分配了一段连续的内存空间1000——1039,内存块首地址base_address = 1000。计算机会给每个内存单元分配一个地址,计算机通过地址来访问内存中的数据,当随机访问数组中某个元素时,先通过寻址地址计算出该元素的内存地址:...原创 2020-02-24 12:50:33 · 241 阅读 · 0 评论 -
复杂度分析
1.复杂度 也叫渐进复杂度,包括时间复杂度和空间复杂度。用来分析算法执行效率与数据规模之间的增长关系。越高阶复杂度的算法,执行效率越低。2.时间复杂度 所有代码的执行时间T(n)与每行代码的执行次数n成正比。 大O时间复杂度表示法:T(n) = O(f(n)) T(n):代码执行时间 n:数据规模大小 f(n):每行代码执行的次数总和 注意:大O时间复杂度表示法并不具...原创 2020-02-16 18:39:38 · 235 阅读 · 0 评论
分享