![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
智慧的人不要秃头
放弃不难,但坚持一定很酷!!!
展开
-
Windows常用快捷键
程序员必知快捷键原创 2022-07-07 20:18:01 · 203 阅读 · 0 评论 -
大数相乘 (字符串相乘)
例如:"123" 与 "456",我们的得出结果 "56088"。模拟人做乘法,两个数相乘,首先将第一个数和第二个数的最后一位相乘,然后将第一个数和第二个数的倒数第二位相乘并左移一位和之前的结果相加,这里就要用到大整数的加法。代码的一些的说明:#include <iostream>#include<string>using namespace std;//这里面试官提到如果给定的字符串前缀有 0 的情况,即 "0123"、"0456" 的情况,如何处理:.原创 2022-02-24 22:53:11 · 499 阅读 · 0 评论 -
C++ const 与 指针的情结
原创 2022-02-13 22:24:35 · 422 阅读 · 0 评论 -
C++异常处理 try catch throw
1. try catch 不会让程序中途结束,会抛出一个异常打印出来继续执行。如果不使用 try catch 程序出现异常直接退出。2. 异常的种类3.throw 抛出异常原创 2022-02-13 22:20:20 · 446 阅读 · 0 评论 -
C++类型转化
1. 当我们把一个非布尔类型的算术值赋给布尔类型时,初始值为Q则结果为false,否则结果为true。bool b = 20 (b为真)2. 当我们把一个布尔值赋给非布尔类型时,初始值为false 则结果为0,初始值为true则结果为1。int i = true (i为1)3. 当我们把一个浮点数赋给整数类型时,进行了近似处理。结果值将仅保留浮点数中小数点之前的部分。int i = 3.14 (i为3)4. 当我们把一个整数值赋给浮点类型时,小数部分记为0。如果该原创 2022-01-24 11:22:25 · 297 阅读 · 0 评论 -
力扣704. 二分查找
给定一个n个元素有序的(升序)整型数组nums 和一个目标值target ,写一个函数搜索nums中的 target,如果目标值存在返回下标,否则返回 -1。class Solution {public: int search(vector<int>& nums, int target) { //此种二分写法是将target放在一个左闭右闭的区间里,也就是[left,right]中 //所以令left指向数组的第一...原创 2022-01-11 20:22:13 · 194 阅读 · 0 评论 -
C++常见的三种哈希结构
当我们想使用哈希法来解决问题的时候,我们一般会选择如下三种数据结构。数组 set (集合) map(映射) 集合 底层实现 是否有序 数值是否可以重复 能否更改数值 查询效率 增删效率 std::set 红黑树 有序 否 否 O(\原创 2022-01-09 22:02:04 · 749 阅读 · 0 评论 -
C++哈希表理论基础
数组:优点:已知某元素的下标值时,通过下标值的方式获取到数组中对应的元素,这种获取元素的速度是非常快的。缺点:如果某个元素的下标值未知,而只是知道该元素在数组中,这时我们想要获取该元素就只能对数组进行线性查找,即从头开始遍历,这样的效率是非常低的,如果一个长度为10000的数组,我们需要的元素正好在第10000个,那么我们就要对数组遍历10000次,显然这是不合理的。所以,为了解决上述数组的不足之处,引入了哈希表的概念。一、什么是哈希表哈希表,也称散列表,是一种以 键-值(key...原创 2022-01-09 21:44:40 · 1077 阅读 · 0 评论 -
C++堆排序
第一步:我们将待排序数组形象成一个堆结构,并将其调整为最大堆(堆结构:左孩子的下标是2*i+1,右孩子下标2*i+2)(最大堆的特点:在这个堆结构里,任何一个父节点的值都大于其子节点的值)t的值)第二步:将堆顶元素与待排序数组(假设待排序的数据数量为nums)最后一个元素进行交换,swap(a[0], a[nums-1]);第三步:待排序的数据量减少一个,即num--;将待排序数组重新调整成最大堆结构,重复第二步,循环n-1次,将所有数据排序完成。初始化堆(讲数组调整成最大堆)从最后一个父原创 2021-12-13 21:07:37 · 2065 阅读 · 0 评论 -
C++桶排序(计数排序)--需申请数组空间
遍历数组找到最大的数max,做为桶的桶号,即桶长度为max+1,将桶中的数全部置为0,遍历原数组,在同种记录原数组中各个数出现的个数void bucketSort(vector<int> &arr) { int n = arr.size(); int max = arr[0]; //找到原数组中最大的数 for (int i = 1; i < n; i++) { if (arr[i] > max) { max = arr[i]; }...原创 2021-12-12 17:35:10 · 372 阅读 · 0 评论 -
C++希尔排序
首先,我们要知道,插入排序的数据规模越小,或者越接近有序,他的效率是越高的。基于这个结论,希尔改进了插入排序,创造了希尔排序。【希尔排序是插入排序的一种,也叫做缩小增量排序】具体改进如下: 先将序列在逻辑上分组,分组靠的是增量。因为分组导致每个小组的数据规模较小,所以插入排序效率高;当此次分组的排序结束后,减小增量,此时每个组的数据规模会增加,但是因为有小分组排序的铺垫,这新的分组有序性会很高,插入排序效率也很高。所以完美的利用分组把插入排序的优势展现出来,当增量变为1的时候,数组就排...原创 2021-12-12 17:05:53 · 1122 阅读 · 0 评论 -
C++选择排序
定义一个最大值变量max,每次从数中找到最大的数,将这个数赋值给max并记录它的下边maxIndex,然后将最大数的下标与最后一个数进行交换void selectSort(vector<int>& arr) { if (arr.size() == 0) { return; } int maxIndex = 0;//定义最大数的索引位置 for (int j = arr.size(); j > 0; j--) {//每次需要遍历的数的个数, for (...原创 2021-12-09 19:40:09 · 279 阅读 · 0 评论 -
C++冒泡排序(优化)
优化+bool类型变量,如果某次冒泡排序没有发生元素的交换,就说明元素已经排好序了,就不用再进行无效的排序了依次比较两个相邻的元素,若前一个数比后一个数大,交换两个数,即将最大的数放在最后,是一种从小到大的排序void buffuerSort(vector<int>& arr) {//需要传引用类型,不传引用类型,无法修改主函数中的数组 for(int j = arr.size();j>0;j--){//每次需要排的数的个数 bool judge...原创 2021-12-09 19:01:42 · 925 阅读 · 0 评论 -
C++ 插入排序
插入排序就是给一个数组进行排序,按照从小到大或从大到小的顺序进行分为有序表和无序表,有序表就是已经排好的部分,无序表就是未排序的部分数组中的第一个元素构成的表一定是有序的,因为只有一个元素,所以以第一个元素作为有序表的基准有序表(第一个元素一定是有序的),把第一个元素看作有序表,其他元素看作无序表void insertSort(vector<int>& arr) { if (arr.size() <= 1) { return; } //j代表无序表第一原创 2021-12-09 22:38:24 · 679 阅读 · 0 评论 -
C++归并排序
将两个有序数组合并成一个有序数组 将数组进行分解,直到分解为单个元素时,因为最开始无法得到有序数组,而是把只有一个元素的单个数组,看成有序数组 依次将两两有序数组进行有序合并,直至排序完成 合并的步骤:先申请两数组合并后所需要的空间大小,然后将两个排序好的数组逐一进行比较,往申请的空间里 void merge(int a[], int l, int mid, int r) { int *help = new int[r - l + 1];//申请两个数组合并后所需原创 2021-12-18 13:49:01 · 1607 阅读 · 0 评论 -
C++类、多文件编程应用实例 ---- 俯卧撑管理系统
文件命名等内容Student.h#pragma once#include<iostream>#include<string>using namespace std;class Student{public: string sname; string sno; int pushUpCounter; Student() {} Student(string sno, string sname, int PUC) { this->sname =原创 2022-01-04 21:47:20 · 904 阅读 · 0 评论 -
使用类构建链表
之前的文章C++链表的创建以及增删改查_tingtingli~~~的博客-CSDN博客是使用结构体struct来定义链表中的节点,在面试闪思科技的时候,面试官说这属于c语言的思想构建链表,而对于C++来说,没有充分的利用c++的特性。于是有了本篇使用类构建链表思路也很简单,本文只给出了创建链表和打印链表两种方法,其余方法和C++链表的创建以及增删改查_tingtingli~~~的博客-CSDN博客没有什么差别,大同小异#include<iostream>#include<.原创 2021-12-30 14:43:51 · 2563 阅读 · 0 评论