数据结构与算法
文章平均质量分 56
c++数据结构,为大厂面试准备
Robert_Gordon
怕什么真理无穷,进一寸有一寸的欢喜!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
排序算法之——简单选择排序
选择排序简单选择排序简介简单选择排序算法的性能:简单选择排序代码(c++)简单选择排序的一种选择排序的方法。给定一个数组array[]={2,4,6,1,3},对它进行升序排序。简单选择排序简介简单选择排序的方法就是每次在待排序的数组中选到最小的那个数,把它放到数组中的前面。原数组{2,4,6,1,3}将数组中的第一个数2与数组中的其他元素进行比较,发现最小的数是1,因此将1与2的位置进行变换,得到数组[1,4,6,2,3]。将数组中的第2个元素4与数组中的其他元素进行比较,得到最小的数是2原创 2021-01-19 15:45:01 · 439 阅读 · 0 评论 -
排序算法之——归并排序
归并排序归并排序简介归并排序算法的性能:归并排序代码(c++)归并排序说白了是利用归并的思想实现排序的方法。给定一个数组array[]={23,46,0,8,11,18},对它进行升序排序。归并排序简介快速排序的基本思想就是将问题分成许多个小的问题,进行递归求解,然后在通过合并将他们合在一起。用一张图来形象的表示:可以看出分为两个阶段:分 与 治分阶段: 可以理解为通过递归来把这一数组拆分成子序列的过程。治阶段: 就是将两个有序的子序列合并成一个有序列。如将[4,5,7,8]和[原创 2021-01-19 14:33:21 · 482 阅读 · 0 评论 -
排序算法之——冒泡排序
冒泡排序冒泡排序简介冒泡排序算法的性能:冒泡排序代码(c++)冒泡排序是属于交换排序的一种方法。给定一个数组array[]={2,4,6,1,3},对它进行升序排序。冒泡排序简介冒泡排序的方法就是要在每趟排序过程中比较相邻的两个元素,即将小的放在前面,大的放在后面。原数组{2,4,6,1,3}第一次循环(将数组中最大的放到最后面)将2和4进行比较,2<4,所以排序之后为[2,4,6,1,3]将4和6进行比较,4<6,所以排序之后为[2,4,6,1,3]将6和1进行比较,6&g原创 2021-01-14 19:45:13 · 280 阅读 · 1 评论 -
排序算法之——快速排序
快速排序快速排序简介快速排序算法的性能:快速排序代码(c++)快速排序也是属于交换排序的一种方法。给定一个数组array[]={23,46,0,8,11,18},对它进行升序排序。快速排序简介快速排序的基本思想就是通过一趟排序,将要排序的数据分割成独立的两部分,在分割点的左边都是比他小的数,分割点的右边都是比他大的数。left<right base(基准数据)=a[left]从队尾开始向前扫描,当a[right]>base时,right–;若a[right]<原创 2021-01-15 18:59:25 · 505 阅读 · 0 评论 -
排序算法之——直接插入排序
直接插入排序直接插入排序简介直接插入排序算法的性能:直接插入排序代码(c++)直接插入排序是属于插入排序的一种简单的方法。给定一个数组array[]={2,4,6,1,3},对它进行升序排序。直接插入排序简介直接插入排序的方法就是每次将一个新数据插入到有序队列中的合适位置里。,定义可能看的不是很懂,下面从例子直接来说明。原数组{2,4,6,1,3}(1)将数组中序列下标为0的元素视为个数为1的有序序列。将4插入到[2]这个有序的序列之中去,因为2<4,所以插序之后的序列为[2,4,6,原创 2021-01-14 21:21:59 · 391 阅读 · 0 评论 -
m进制转为10进制
如何将任意的m进制数转化为10进制数#include<bits/stdc++.h> using namespace std;int main(){ char a[100]; int b; cin>>a>>b; int n=1,sum=0; for(int i=strlen(a)-1;i>=0;i--) { if('0'<=...原创 2019-09-27 22:01:08 · 1158 阅读 · 0 评论 -
递归算法的设计
一 到底什么时递归?所谓递归,简单点来说,就是一个函数直接或间接调用自身。我们可以把” 递归 “比喻成 “查字典 “,当你查一个词,发现这个词的解释中某个词仍然不懂,于是你开始查这第二个词。可惜,第二个词里仍然有不懂的词,于是查第三个词,这样查下去,直到有一个词的解释是你完全能看懂的,那么递归走到了尽头,然后你开始后退,逐个明白之前查过的每一个词,最终,你明白了最开始那个词的意思。(摘自知乎...原创 2019-09-13 17:03:08 · 1387 阅读 · 0 评论 -
十进制转换为M进制
#include<bits/stdc++.h>using namespace std;int main(){ int n,m; int count=0; int arr[10]; cin>>n>>m; while(n!=0) { arr[count]=n%m;...原创 2019-09-08 11:02:59 · 1635 阅读 · 0 评论 -
求最大公约数和最小公倍数
方法:辗转相除辗转相除法有两整数a和b:① a%b得余数c② 若c=0,则b即为两数的最大公约数③ 若c≠0,则a=b,b=c,再回去执行①a * b除以最大公约数 等于最小公倍数代码如下所示int max(int *x,int *y){ int temp; if(*x<*y) { temp=*x; *x=*y; *y=temp; }}int d...原创 2019-09-07 19:38:27 · 311 阅读 · 0 评论 -
二叉树的遍历(先序、中序、后序)
二叉树的遍历分为以下三种:1、先序遍历:遍历顺序为【根左右】2、中序遍历:遍历顺序为【左根右】2、中序遍历:遍历顺序为【左右根】所谓的先序遍历中的【根左右】是什么意思呢?即:(1)访问根节点; (2)先序遍历左子树; (3)先序遍历右子树。 举个例子,看下图这个树的前序遍历:ABDEGHCF中序遍历:DBGEHACF后序遍历:DGHEBFCA层次遍历:ABCDEFG...原创 2020-02-28 21:24:36 · 7356 阅读 · 0 评论 -
数据结构之二叉树
数的定义:1、有且只有一个称为根的节点。2、有若干个互不相交的子树,这些子树本身也是一棵树。深度:从根节点到最底层节点的层数称之为深度。叶子节点:没有子节点的节点。非终端节点:非叶子节点。度:子节点的个数称为度。叶子节点:没有子节点的节点。图中A的度为3,C的度为1,F的度为0;此数的深度为3。一般树:任意一个节点的子节点的个数都不受限制。...原创 2019-10-03 16:20:02 · 182 阅读 · 0 评论 -
数据结构之队列
一 队列的定义队列(Queue):是一种先进先出(First In First Out ,简称FIFO)的线性表。只允许在表的一端front进行插入,而在另一端rear进行删除。队首(front) :允许进行删除的一端称为队首。队尾(rear) :允许进行插入的一端称为队尾。二 队列的分类队列可分为静态队列和链式队列两大类。其中静态队列是用数组形式实现的,为循环队列。三 循环队列的讲解...原创 2019-10-01 10:29:11 · 315 阅读 · 0 评论 -
数据结构之栈
一 栈的定义栈是一种“先进后出”的一种数据结构,有压栈出栈两种操作方式。如下图:二 栈的分类栈可分类为:静态栈和动态栈两大类。凡是动态分配的都在堆里面分配。凡是静态分配的都在栈里面分配。三 栈的算法栈的算法主要是压栈和出栈两种操作的算法,下面我就用代码来实现一个简单的栈。首先要明白以下思路:(1)栈操作的是一个一个节点(2)栈本身也是一种存储的数据结构(3)栈有初始化、压栈...原创 2019-09-30 22:34:33 · 610 阅读 · 0 评论 -
数据结构之单向链表
链表是一种存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。结构体指针在这里得到充分的利用。其中链表中的节点都由以下两部分组成:1、数据元素本身,其所在的区域称为数据域;2、指向直接后继元素的指针,所在的区域称为指针域;也就是说,链表实际存储的是一个一个的节点,真正的数据元素...原创 2019-09-28 20:25:17 · 354 阅读 · 0 评论
分享