C++
shuangyumelody
认真做好生活中的每一件小事
展开
-
C++字符串重载运算符函数(剑指offer面试题1)
//剑指offer面试题1:重载运算符函数//题目:如下为类型CMyString的声明,请为该类型添加多种运算符函数。#include<iostream>#include<cstring>#include<cstdio>using namespace std;class CMyString{ friend ostream& op...原创 2018-03-15 20:11:39 · 505 阅读 · 1 评论 -
排序算法---希尔排序
参考网址:http://www.cnblogs.com/eniac12/p/5329396.html#s6希尔排序,也叫递减增量排序,是插入排序的一种更高效的改进版本。希尔排序是不稳定的排序算法。希尔排序是基于插入排序的以下两点性质而提出改进方法的:插入排序在对几乎已经排好序的数据操作时,效率高,即可以达到线性排序的效率但插入排序一般来说是低效的,因为插入排序每次只能将数据移动一位希尔排...转载 2018-09-20 20:02:43 · 200 阅读 · 0 评论 -
排序算法---归并排序
参考网址:http://www.cnblogs.com/eniac12/p/5329396.html#s6归并排序是创建在归并操作上的一种有效的排序算法,效率为O(nlogn),1945年由冯·诺伊曼首次提出。归并排序的实现分为递归实现与非递归(迭代)实现。递归实现的归并排序是算法设计中分治策略的典型应用,我们将一个大问题分割成小问题分别解决,然后用所有小问题的答案来解决整个大问题。非递归(迭...原创 2018-09-18 21:02:41 · 156 阅读 · 0 评论 -
排序算法---插入排序
插入排序(Insertion-Sort)的算法描述是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。算法描述:一般来说,插入排序都采用in-place在数组上实现。具体算法描述如下:从第一个元素开始,该元素可以认为已经被排序;取出下一个元素,在已经排序的元素序列中从后向前扫描;如果该元素(已排序)大于新元素,将该元...原创 2018-09-17 20:40:39 · 167 阅读 · 0 评论 -
排序算法---选择排序
选择排序(Selection-sort)是一种简单直观的排序算法。它的工作原理:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。算法描述:n个记录的直接选择排序可经过n-1趟直接选择排序得到有序结果。具体算法描述如下:初始状态:无序区为R[1…n],有序区为空;第i...原创 2018-09-17 19:18:18 · 191 阅读 · 0 评论 -
排序算法---冒泡排序
参考网址:https://www.cnblogs.com/onepixel/articles/7674659.html 冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。 算法描述: 1....原创 2018-09-17 18:51:10 · 404 阅读 · 0 评论 -
排序算法---快速排序(C++语言)
参考网址:https://www.cnblogs.com/onepixel/articles/7674659.html 快速排序的基本思想:通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。 6.1 算法描述快速排序使用分治法来把一个串(list)分为两个子串(sub-lists)。具体算法描述如...原创 2018-09-17 16:46:00 · 441 阅读 · 1 评论 -
哔哩哔哩笔试题------顺时针打印数字矩阵
题目描述: 给定一个数字矩阵,请设计一个算法从左上角开始顺时针打印矩阵元素; 输入: 第一行是两个数字,分别代表行数M和列数N;接下来是M行, 每行N个数字,表示这个矩阵的所有元素;当读到M=-1,N=-1时,输入终止; 输出: 请按逗号分隔顺时针打印矩阵元素(注意最后一个元素末尾不要有逗号! 例如输入“1,2,3”,而不是“1,2,3,”),每个矩阵输出完成后记得换行;样例输入...原创 2018-09-10 11:09:48 · 1844 阅读 · 0 评论 -
美团点评笔试题-图的遍历
题目描述: 给定一张包含N个点,N-1条边的无向图,节点从1到N编号,每条边的长度均为1.假设你从1号节点出发并打算遍历所有节点,那么总路程至少是多少? 输入: 第一行包含一个整数N,1≤1≤1\leq N≤105N≤105N\leq10^5 。 接下来N-1行,每行包含两个整数X和Y,表示X号节点和Y号节点之间的一条边,1≤X1≤X1\leq X 、1≤Y1≤Y1\leq Y 。 输出...原创 2018-09-10 09:28:47 · 1094 阅读 · 1 评论 -
百词斩笔试题------数组合并
参考网址:https://blog.csdn.net/Handoking/article/details/82627613?tdsourcetag=s_pctim_aiomsg 题目描述: 给定n个有序整数的集合,求它们的并集。请尽量使用更优时间复杂度的算法。 输入描述: 输入为n-1行,第一行为整数n;接下来n行,每行第一个数m,表示此集合的个数,接下来是m个整数。整数都是从小到大有序排...原创 2018-09-12 11:08:00 · 1175 阅读 · 0 评论 -
C++替换空格(剑指offer面试题5)
// 面试题5:替换空格// 题目:请实现一个函数,把字符串中的每个空格替换成"%20"。例如输入“We are happy.”,// 则输出“We%20are%20happy.”。#include<iostream>#include<cstring>#include<string>using namespace std;void replaceSpace(int length){原创 2018-04-11 20:10:30 · 350 阅读 · 0 评论 -
C++链表(LinkList)链表的创建、插入、删除等基本操作
下面是LinkList.h文件,包含链表的基本函数#include<iostream>#include"malloc.h"#include"Node.h"#include <exception>#include <cstdlib>using namespace std;template < class T>class LinkList{ friend ostream& oper原创 2018-04-11 19:48:48 · 19401 阅读 · 3 评论 -
C++从尾到头打印链表(剑指offer面试题6)
下面是PrintListInReversedOrder.h文件,利用两种方法// 面试题6:从尾到头打印链表// 题目:输入一个链表的头结点,从尾到头反过来打印出每个结点的值。#include<iostream>#include<stack>#include<vector>using namespace std;//单项链表的结点定义s...原创 2018-04-11 18:16:56 · 835 阅读 · 0 评论 -
C++ 向量(vector)一维向量的初始化,二维向量的初始化
参考博客:https://www.cnblogs.com/mr-wid/archive/2013/01/22/2871105.html1. 向量的简介向量 vector 是一种对象实体, 能够容纳许多其他类型相同的元素, 因此又被称为容器。 与string相同, vector 同属于STL(Standard Template Library, 标准模板库)中的一种自定义的数据类型, 可以广...原创 2018-03-22 12:51:44 · 30344 阅读 · 1 评论 -
C++二维数组中的查找(剑指offer面试题4)
下面程序是利用向量编写的二维数组的查找,在main函数中完成数组的输入// 面试题4:二维数组中的查找// 题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按// 照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个// 整数,判断数组中是否含有该整数。#include<iostream>#include<vector>#include<algorit原创 2018-03-22 09:02:49 · 369 阅读 · 0 评论 -
C++不修改数组找出重复的数字(剑指offer面试题3-2)
// 面试题3(二):不修改数组找出重复的数字// 题目:在一个长度为n+1的数组里的所有数字都在1到n的范围内,所以数组中至// 少有一个数字是重复的。请找出数组中任意一个重复的数字,但不能修改输入的// 数组。例如,如果输入长度为8的数组{2, 3, 5, 4, 3, 2, 6, 7},那么对应的// 输出是重复的数字2或者3。/*******************解题思路****...转载 2018-03-21 10:09:53 · 582 阅读 · 2 评论 -
C++找出数组中重复的数字( 剑指offer面试题3-1)
第一块程序是剑指offer原题,找出任意一个重复的数字,第二块程序是找出所有重复的数字// 剑指offer面试题3(一):找出数组中重复的数字// 题目:在一个长度为n的数组里的所有数字都在0到n-1的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,// 也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。例如,如果输入长度为7的数组{2, 3, 1, 0, 2, 5...原创 2018-03-19 08:57:18 · 3687 阅读 · 0 评论 -
排序算法---堆排序
算法描述:堆排序是指利用堆这种数据结构所设计的一种选择排序算法。堆是一种近似完全二叉树的结构(通常堆是通过一维数组来实现的),并满足性质:以最大堆(也叫大根堆、大顶堆)为例,其中父结点的值总是大于它的孩子节点。我们可以很容易的定义堆排序的过程:由输入的无序数组构造一个最大堆,作为初始的无序区把堆顶元素(最大值)和堆尾元素互换把堆(无序区)的尺寸缩小1,并调用heapify(A, 0)从...转载 2018-09-20 20:07:18 · 180 阅读 · 0 评论