数据结构与算法
董小花
“我见过许多优秀的人,却没见过天才。人人都能看到他们的光芒,走近了,才看得到,他们值得拥有光芒。”
展开
-
链表
一.常见的缓存淘汰策略: 1.先进先出策略FIFO 2.最少使用策略LFU 3.最近最少使用策略LRU 二.链表 (一)链表的定义:链表是物理存储单元上非连续的、非顺序的存储结构,它由一个个结点,通过指针联系起来的,每个结点包括数据和指针。 (二)链表结构: 1.单链表 通过“指针”将一组零散的内存块串联起来使用。内存块称为结点;记录下个结点地址的指针称为后继指针next;第一个结点为头结点,用来...原创 2020-03-24 17:47:07 · 246 阅读 · 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 · 153 阅读 · 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 · 111 阅读 · 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 · 110 阅读 · 0 评论 -
数组
1.数组概念:是一种线性表结构。用一组连续的内存空间来存储一组具有相同类型的数据。 2.例:int [ ] a = new int[10] 计算机给数组a分配了一段连续的内存空间1000——1039,内存块首地址base_address = 1000。 计算机会给每个内存单元分配一个地址,计算机通过地址来访问内存中的数据,当随机访问数组中某个元素时,先通过寻址地址计算出该元素的内存地址:...原创 2020-02-24 12:50:33 · 179 阅读 · 0 评论 -
复杂度分析
1.复杂度 也叫渐进复杂度,包括时间复杂度和空间复杂度。用来分析算法执行效率与数据规模之间的增长关系。越高阶复杂度的算法,执行效率越低。 2.时间复杂度 所有代码的执行时间T(n)与每行代码的执行次数n成正比。 大O时间复杂度表示法:T(n) = O(f(n)) T(n):代码执行时间 n:数据规模大小 f(n):每行代码执行的次数总和 注意:大O时间复杂度表示法并不具...原创 2020-02-16 18:39:38 · 184 阅读 · 0 评论