C++语法与算法
sjtuSecondSilly
胶带第二傻
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
合并排序算法
3 比较复制数组中两个指针所指向的元素,选择相对小的元素放入到原始待排序数组中,并移动指针到下一位置。1申请空间,使其大小为两个已经排序序列之和,然后将待排序数组复制到该数组中。2设定两个指针,最初位置分别为两个已经排序序列的起始位置。5 将另一序列剩下的所有元素直接复制到原始数组末尾。4重复步骤3直到某一指针达到序列尾。原创 2024-02-04 12:03:24 · 726 阅读 · 0 评论 -
sb二叉树
递归创建二叉树1. 询问法创建typedef int ElementType;typedef struct BinaryTreeNode{ ElementType data; struct BinaryTreeNode *left_child, *right_child, *parent;}BinaryTreeNode, *BinaryTreevoid Create_Binary_Tree(BinaryTree &tree){ char check;原创 2022-04-11 14:43:29 · 1110 阅读 · 0 评论 -
回文串判定
回文字符串判定1. 题目描述'aba'是回文, 'abc'则不是回文,写一个算法,输入为字符串,输出为是、否;2. 解题思路栈。将字符串等分,前半部分入栈,然后逐个弹出与后半部分逐个比较,若逐个相等则为回文。否则非回文停止条件,栈空3. 算法步骤1. 初始化一个栈2. 求字符串长度,并将前一半字符依次入栈3. 如果栈不空,则弹出顶部元素和余下字符串的第一个/第二个比较(字符串长度的奇偶性)4. 若字符串长度为偶数,则正常比较5. 若字符串长度为奇数,则跳过中心点,用栈顶元素比较中原创 2022-04-07 16:24:02 · 1739 阅读 · 0 评论 -
十进制到二进制的数制转换
十进制到二进制的数制转换1. 解题思路手工法,就是用辗转相除取余数的方法,停止条件就是商为0 转换为计算机算法,就是让计算机去帮我们算除法,然后让**余数进栈**2. 算法步骤1. 初始化一个栈2. 输入一个n3. n不为0,则将n%2 入栈,同时更新n = n/24. 当n = 0时停止35. 如果栈非空,则逐个弹出栈顶元素6. 当栈空时停止程序3. 程序#define MAXSIZE 100#include <iostream>using namespa原创 2022-04-07 15:54:46 · 426 阅读 · 0 评论 -
单链表及其实现
单链表及其实现1. 单链表的概念用链式储存结果存储数据的线性表,是为链表链式存储,意思就是逻辑上相邻的数据,物理位置不一定相邻因此需要指针可以给每个元素附加上一个指针,这个指针的作用,就是作为下一个元素的地址,指向下一个元素所以链表中的每个节点,包含两个域:数据域和指针域数据域存储数据元素,指针域存储下一个节点的地址注意!!!指针域存储的地址,是下一个节点的地址,而并非下一个数据元素的地址,you feel me?链表的第一种,称之为单向链表,简称单链表,就是一个个地指向下一个首先定义节原创 2022-03-23 13:41:21 · 1039 阅读 · 0 评论 -
类相关的编程(1)——分数类
定义分数(Fraction)类“理解面向对象变成的好方法是着手定义一个新的数据类型”简单地稍微定义一个分数类class Fraction{private: int num; int den;public: void set(int numerator, int denominator); int get_num(); int get_den(); private: void normalize(); int gcf(int原创 2022-03-13 18:06:45 · 1271 阅读 · 0 评论 -
递归的理解(1)
递归函数例子1 阶乘#include <iostream>using namespace std;int factorial(int n){ if(n <= 1) return 1; else return n * factorial(n-1);}int main(){ int i = 5; cout<<factorial(i)<<endl; return 0;原创 2022-03-10 21:53:05 · 352 阅读 · 0 评论 -
查找算法——二分查找 O(log n)
//查找算法//对于sorted_array的二分查找法//假设数组已经按升序排列//因为在每个步骤中,算法对会将搜索的范围减半,变为原来的二分之一//故称二分法#include<iostream>#include <cstdlib>#include <iomanip>using namespace std;void Selection_Sort(int unsorted_array[],int size);int main(){原创 2022-03-06 10:05:12 · 414 阅读 · 0 评论 -
排序算法 选择排序法
选择排序法这种方法有点类似于反向冒泡法,机理就是让数组里面的最小值放到最前面,接着找剩下n-1个值的最小值再放到第二位以此类推算法复杂度分析线性搜索最小值,复杂度为n进行n-1次iterations第i次iteration长度为(n+1-i)的数组查找最小值易知平均时间复杂度为O(n^2)//选择排序法////这种方法有点类似于反向冒泡法,机理就是//让数组里面的最小值放到最前面,接着找剩下n-1个值的最小值//再放到第二位//以此类推////算法复杂度分析//线性搜索最原创 2022-03-05 16:40:34 · 246 阅读 · 0 评论 -
排序算法——冒泡排序
很基础的排序算法冒泡法冒泡法的mehcanism很简单,但从动图原理来看我更愿意称之为沉淀法,就是最大的那个在每轮iteration后会沉到最后去当然,这样客观来讲是轻的(小的数)往上浮动浊坠清扬,本来就是同一过程的一体两面算法步骤从第0个元素开始往后,对数组中的相邻元素对进行比较若前一个和后一个满足升序排列,则不动;否则进行交换在第i次迭代时,需要进行(n-i)次比较和交换进行n-1次迭代,易知算法复杂度为O(n^2)//很基础的排序算法//1. 冒泡法//冒泡法的mehca原创 2022-03-05 16:19:01 · 213 阅读 · 0 评论 -
数组与向量的例程
掷骰子问题描述: 通过统计1、2、3···、6出现的频率,分析骰子是否是一个公平的(fair)骰子。输入为连续的骰子值,应该打印每个值的频次表思考的步骤分解任务,将一整个任务分解为各个步骤我们需要读入骰子值,但不一定需要存储,相反,我们可以为每个骰子值定义一个计数器以记录每个骰子值出现的次数确定所需的算法初始化counter[6] = {0,0,0,0,0,0}counter[(value-1)] ++;增加transplantalityconst int FACESin原创 2022-03-05 14:55:03 · 353 阅读 · 0 评论 -
流的概念及应用于处理文件
参考:《Big C++ 》输入/输出库是基于流的概念。输入流是数据的源头输出流是数据的汇集/数据的目标最常见的数据源头和数据目标是————硬盘上的文件·三种类型的文件流ifstream(input file stream)ofstreamfstream在这里插入代码片要包含**< fstream >**head文件对于文件流的操作5. 从文件流中读取内容1.1. openstring filename;cin>> filename;ifstrea原创 2022-03-05 13:28:40 · 479 阅读 · 0 评论 -
数据结构(1)顺序表及其实现
顺序表众所周知,顺序表是线性表的一种。所谓线性表,就是数据按照线性结构被组织起来,而没有分叉,每个元素都有唯一的其唯一前驱和后继(除收尾外);顺序表,就是采用顺序存储方式的线性表;所谓顺序存储方式,就是逻辑上相邻的数据,在计算机内的存储位置也相邻代码如下第一版本代码(未使用面向对象编程,且transplantablity较差)#include <iostream>using namespace std;const int Maxsize = 100;//impleme原创 2022-03-04 21:05:17 · 433 阅读 · 0 评论 -
简单计算器
题目解答#include <iomanip>#include<cmath>using namespace std;int main(){ int num1,num2; const char add = '+',substration = '-', multiply = '*', division = '/'; char oper; cin>>num1>>num2>>oper; swit原创 2022-03-01 21:25:44 · 163 阅读 · 0 评论 -
2022/3/1 晶晶赴约会
题目晶晶的朋友贝贝约晶晶下周一起去看展览,但晶晶每周的 1,3,51,3,5 有课必须上课,请帮晶晶判断她能否接受贝贝的邀请,如果能输出 YES;如果不能则输出 NO。解答#include <iomanip>using namespace std;enum week_days {null,Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday};int main(){ int datofdate原创 2022-03-01 21:00:27 · 661 阅读 · 0 评论 -
2022/3/1圆的相关计算
题目给出圆的半径,求圆的直径、周长和面积。输入圆的半径实数 rr,输出圆的直径、周长、面积,每个数保留小数点后 44 位。圆周率取值为 3.141593.14159。解答#include <iomanip>using namespace std;int main(){ double r,diameter,perimeter,surface; const double pi = 3.14159; cin>>r;原创 2022-03-01 16:34:52 · 148 阅读 · 0 评论 -
C++ 学习笔记(第一阶段)
数组相关的例程// Aaary's Routine 1#include <iostream>using namespace std;int main(){ int array_size = 10; int array_test[array_size]; cout << "Element" << "-------" << "Value"<<endl; for(int x =0; x< array_原创 2022-01-24 21:14:10 · 438 阅读 · 0 评论
分享