![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构和算法
王文平->Trista_wang
好记性不如烂笔头
知其然,并知其所以然
展开
-
数据结构之数组和链表
数组 1 是顺序存储的相同数据类型的数据结构,在内存空间上地址也是连续的,所以在声明数组的时候就要确定长度 声明数组 静态创建数组 int array[100];//定义一个大小100的数组,没有初始化 int array[2]= {1,2};//定义长度为2的数组,并初始化 int array[20]= {1,2};//定义长度为20的数组,并初始化前两个 new动态创建:使用new分配一个数...原创 2019-08-18 16:30:29 · 476 阅读 · 0 评论 -
排序算法之各排序的总体概括
从时间复杂度分析最慢---->最快 O(n2),冒泡稳定、直接插入稳定、直接选择不稳定,虽然速度慢,但胜在简单 O(nlgn)–O(n2),希尔排序(插入排序的改进版),不稳定 很快的O(nlgn),快排不稳定,堆排序不稳定(适合大数据),归并排序稳定, 可达到On的是计数排序,基数排序,桶排序 从空间复杂度分析 大部分空间复杂度都是O(1) 只有归并的空间复杂度是O(n) 快排是O(...原创 2019-08-19 11:13:27 · 164 阅读 · 0 评论 -
排序算法之快速排序
1 快排 递归 不稳定发生在基准元素与v[L]交换 需要partition三步走,一找二划三递归 快排的步骤: 选一个元素做基准 进行partition,就是把比基准小的放在基准的左边,把比基准数大的放到右边,划分结束后基准元素位于中间(如何划分看代码,从后往前找和从前往后找) 对每个分区递归操作上述划分函数,直至每个分序列大小为0或1(递归结束的条件) 最差的情况O(n2)每次选的基准...原创 2019-08-19 11:16:26 · 332 阅读 · 0 评论 -
排序算法之堆排序
2堆排序 不稳定 快速 适合海量数据 利用堆的数据结构来排序(参见堆博客) 堆是一种优先队列,两种实现,最大堆和最小堆,这里先讲解最大堆(以下简称堆),堆是一个完全二叉树,根节点要永远保持最大,大于子节点,所以一旦堆内数据发生变化,要重建堆 堆排的步骤: 建堆,最大堆或者最小堆 堆顶元素跟堆尾元素互换 堆尺寸-1,继续调整成最大堆 重复,知道堆大小为1 堆漂亮的特性是能够用一个数组来表示一...原创 2019-08-19 11:18:48 · 146 阅读 · 0 评论