数据结构与算法学习笔记
文章平均质量分 63
了解计算机知识和计算机内部数据结构,确实是程序员必备知识。
Charles Ray
现就职于某半导体公司。Software Programmer
展开
-
数据结构与算法 —— O(nlogn)排序算法(快排和归并)(c++)
文章目录希尔排序快速排序(分治+挖坑法)测试用例希尔排序https://blog.csdn.net/u012918361/article/details/68921601希尔排序作为第一批突破O(n^2)的算法之一,在数据中等规模时候性能很好,大规模时候没有快排好时间复杂度O(nlogn)不好证明基本思路:插入排序的改进,就是不断分组,每组进行插入排序注意传入引用,不然按值传递速度很慢...原创 2020-04-26 23:08:53 · 1337 阅读 · 0 评论 -
数据结构与算法 —— O(nlogn)堆排序(c++)
文章目录含义前置知识思路复杂度代码参考文档含义大顶堆:二叉树,每个根节点值都大于等于其左右孩子的节点值,这样根节点就是最大值小顶堆:每个根节点值都小于等于左右孩子节点值,根节点为最小值前置知识我们对堆中的结点按层进行编号从左到右,对应的数组就是一个大顶堆数组。由于是完全二叉树,所以有下面结论父结点索引:(i-1)/2左孩子索引:2*i+1右孩子索引:2*i+2思路堆排序的过程可以具体分为三步,创建堆:首先将待排序的数组构造成一个大根堆,此时整个数组的最大值就是堆结构的顶端。调原创 2021-03-19 17:35:32 · 269 阅读 · 0 评论 -
数据结构与算法 —— O(n)排序算法(计数排序)(c++)
最快的两种排序:计数(空间换时间),桶排序一种以最大空间换时间的算法,但是我们必须知道数字取值范围计数排序时间复杂度O(n) 空间复杂度S(n)计数排序:就是使用的是vector代替map原理,比如我取值范围是100,那么我就建立一个vector大小为100使用下标代替数字,值代表出现次数。这样只需要遍历一次就可以排序完成。但是我们必须知道数字取值范围,然后创建这么大的一个数组//时间复杂度为O(n) + O(k) k为传入数的范围,因为第二个遍历要遍历k次。空间复杂度为S(K) + S(N)为原创 2021-03-08 23:34:05 · 1301 阅读 · 0 评论 -
数据结构与算法 —— O(nˆ2)排序算法(冒泡,选择,插入)(c++)
https://www.cnblogs.com/BobHuang/p/11263183.htmlhttps://www.jianshu.com/p/9e855ba2b079// 1.bubble sort 冒泡//稳定, O(n^2) S(1)//大数置后,每次与他后一个数比较,把大的往后放,每次循环最大的数放到最后void BubbleSort(vector<int>&am...原创 2020-04-21 22:27:12 · 255 阅读 · 0 评论 -
数据结构与算法(java)—— 队列
文章目录队列的实现数组实现单向队列https://blog.csdn.net/weixin_44187730/article/details/96141225队列的实现队列为先进先出,队列可以由数组实现,也可以由链表实现。数组实现单向队列package DataStructure;public class ArrayQueueDemo { //测试队列 public ...原创 2019-10-16 22:19:08 · 241 阅读 · 0 评论 -
数据结构与算法(java)—— 常用排序算法(冒泡,快排,选择,插入)
文章目录排序算法概述内部排序:外部排序:八大排序算法:1. 冒泡排序基本思想:代码实现:算法效率:2. 快速排序基本思想:实现步骤代码实现算法效率3. 选择排序算法效率4. 插入排序基本思想:排序算法概述内部排序:将所有数据都加载到内存中排序,也就是我们常用的排序外部排序:因为可能数据量很大,所以无法全部加载到内存中,那么我们需要借助外部存储器来进行排序。八大排序算法:交换:冒泡排...原创 2019-09-19 20:27:59 · 207 阅读 · 0 评论 -
数据结构与算法 —— 常用时间复杂度与空间复杂度
算法的时间复杂度忽略常数项和低次项还有系数时间复杂度越大,则算法执行效率越低各种排序算法时间复杂度一般我们讨论的时间复杂度都是最坏时间复杂度我们可以看到冒泡,交换,选择,插入时间复杂度一样为n2所以他们的性能差不多而基数,希尔,快速,归并,堆排序,时间复杂度为nlogn速度就要要快一些算法的空间复杂度一个算法在运行时占用的内存空间的度量。在用户角度我们更考虑算法的时间复杂...原创 2019-09-18 16:35:17 · 3823 阅读 · 0 评论 -
数据结构与算法(java)—— 链表
数据结构概述数据结构包括:线性结构和非线性结构线性结构:存在一一对应关系,比如数组a[0]=1.(数组,队列,栈,链表)线性结构有两种存储方式:顺序存储和链式存储,顺序存储称为线性表,存储的元素地址是连续的比如数组。链式存储的线性表称为链表,存储数据不连续,靠地址指针来定位。链式存储适用于在较频繁地插入、删除、更新元素时,而顺序存储结构适用于频繁查询时使用。非线性结构:二维数组,图,树。...原创 2019-09-18 11:20:22 · 221 阅读 · 0 评论 -
数据结构与算法 —— 算法概念与时间复杂度介绍
文章目录1. 算法的特征2. 一个算法例子:第一种思路:枚举第二种方式3. 算法的效率衡量4. 时间复杂度——大O表示法计算时间复杂度举例计算最坏时间复杂度常见时间复杂度常见时间复杂度关系参考文章 https://www.jianshu.com/p/f4cca5ce055a1. 算法的特征输入: 算法具有0个或多个输入输出: 算法至少有1个或多个输出有穷性: 算法在有限的步骤之后会自动结...原创 2019-06-25 03:36:34 · 537 阅读 · 0 评论