![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c/c++
文章平均质量分 63
hiudawn
https://github.com/hiudawn/
展开
-
c++通过定义虚数类实现加号、左右移等操作运算符的重载,可cout、cin虚数
虚类和各种操作符重载,如运算符号和流等。原创 2018-04-15 20:45:56 · 1448 阅读 · 0 评论 -
排序算法之(1)--冒泡排序
介绍无论你学习哪种编程语言,在学到循环和数组时,通常都会介绍一种排序算法来作为例子,而这个算法一般就是冒泡排序。冒泡排序(Bubble Sort)一种交换排序,它的基本思想是:两两比较相邻记录的关键字,如果反序则交换,直到没有反序的记录为止。 代码实现这里实现最简单最容易想到的一种//辅助函数:交换两个变量void swap(int*a,int*p){ ...原创 2018-05-19 20:51:13 · 218 阅读 · 0 评论 -
排序算法之(2)--选择排序
选择排序(Selection-sort)是一种简单直观的排序算法。它的工作原理:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。原创 2018-05-19 21:00:40 · 144 阅读 · 0 评论 -
排序算法之(3)--插入排序
这里介绍直接插入排序(Straight Insertion Sort),其基本操作是将一个记录插入到已经排好序的有序表中,从而得到一个新的、记录数增1的有序表。原创 2018-05-19 21:04:03 · 130 阅读 · 0 评论 -
排序算法之(4)--希尔排序
介绍希尔排序(Shell Sort)是D.L.Shell于1959年提出来的一种排序算法,在这之前排序算法的时间复杂度基本都是O(n2)O(n2)O(n^2)的,希尔排序算法是突破这个时间复杂度的第一批算法之一。我们前一节讲的直接插入排序,应该说,它的效率在某些时候是很高的,比如,我们的记录本身就是基本有序的,我们只需要少量的插入操作,就可以完成整个记录集的排序工作,此时直接插入很高效。还...原创 2018-05-19 21:11:42 · 174 阅读 · 0 评论 -
排序算法之(5)--快速排序
介绍快速排序(Quick Sort)的基本思想是:通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序的目的。这个排序可谓是面试最喜欢问的了,用的是递归思想。看上去似乎很难理解,其实只要设定好递归出口,实现起来也并不太难。 这个动图好像有点难理解,我再找点资源看看。感兴趣的参考这里,我只...原创 2018-05-19 21:17:28 · 243 阅读 · 0 评论 -
排序算法之(6)--归并排序
介绍归并排序(Merging Sort)就是利用归并的思想实现的排序方法。它的原理是假设初始序列含有n个记录,则可以看成是n个有序的子序列,每个子序列的长度为1,然后两两归并,得到⌈n/2⌉(⌈x⌉表示不小于x的最小整数)个长度为2或1的有序子序列;再两两归并,……,如此重复,直至得到一个长度为n的有序序列为止,这种排序方法称为2路归并排序。 一开始,我们把每两两个数据看成排好的序列,就能...原创 2018-05-19 21:23:11 · 281 阅读 · 0 评论 -
排序算法之(7)--堆排序
介绍堆排序(Heap Sort)就是利用堆(假设利用大顶堆)进行排序的方法。它的基本思想是,将待排序的序列构造成一个大顶堆。此时,整个序列的最大值就是堆顶的根结点。将它移走(其实就是将其与堆数组的末尾元素交换,此时末尾元素就是最大值),然后将剩余的n-1个序列重新构造成一个堆,这样就会得到n个元素中的次小值。如此反复执行,便能得到一个有序序列了。堆排序真的是一个好东西,不管是待排序序列有序...原创 2018-05-19 21:27:14 · 209 阅读 · 0 评论 -
排序算法之(8)--基数排序
介绍基数排序是按照低位先排序,然后收集;再按照高位排序,然后再收集;依次类推,直到最高位。有时候有些属性是有优先级顺序的,先按低优先级排序,再按高优先级排序。最后的次序就是高优先级高的在前,高优先级相同的低优先级高的在前。比如四个数字112 311 111 12(即012) 第一趟按个位排完是311 121 112 12 第二趟按十位排完是311 112 12 121 第三趟按...原创 2018-05-20 00:33:40 · 178 阅读 · 0 评论 -
c++ 数据结构之中缀表达式
中缀表达式转后缀表达式所谓中缀,即常见的那种表达式,如8+(3−1)×58+(3−1)×58+(3-1)\times 5 后缀表达式则是计算机内部实际的计算方式,如831−5×+831−5×+831-5\times +转换方法对于”8+(3-1)*5” 先创建一个用来保存符号的栈stack 从左开始遍历每个字符: 对于数字: 直接输出对于符号: 遇到左括号,进栈...原创 2018-05-04 14:51:57 · 2646 阅读 · 0 评论 -
c++ 数据结构之用自定义链式栈实现括号成对匹配检测
链式栈链式栈其实和顺序栈差不太多,只是节点之间不再是连续的,而是改成用指针相连。实现自己的链式栈,有助于理解数据结构中的链表和栈。另外这里结合了一个括号成对匹配检测,也就是给定了一个表达式,判断里面的括号是不是成对出现的。个人感觉除了小括号,要是同时需要检测其他括号,只需要加多几个栈,同时进行出栈入栈即可。判断括号是否成对从左往右,遇到左括号入栈,遇到右括号出栈。有两种情况不匹配,一是...原创 2018-05-04 01:58:11 · 867 阅读 · 0 评论 -
c++实现int数组简单的拷贝、逆序、打印、赋值、判断相等功能
用类实现,那时还没设置vim缩进原创 2018-04-15 16:37:35 · 3296 阅读 · 0 评论 -
c++自定义指针类型、*和->运算符重载
类里面重载一些->操作符原创 2018-04-17 09:57:35 · 1800 阅读 · 0 评论 -
c++实现简单的String类,计算长度,输入输出,*运算符重载,字符拼接
用char*实现的一个类似STL<string>的string类原创 2018-04-17 23:10:06 · 611 阅读 · 0 评论 -
c++序列化对象的文件存取
用流操作来存储一些对象、变量原创 2018-04-22 13:24:20 · 3159 阅读 · 3 评论 -
c++ STL vector容器(int类型、自定义对象类型、嵌套容器)for_each回调函数打印
STL vector容器的初次见面原创 2018-04-22 14:34:11 · 1995 阅读 · 0 评论 -
c++虚函数和虚继承
避免多继承时候的变量或方法模棱两可、也就是避免儿子继承了两个爸爸的同名方法,不知用谁的问题原创 2018-04-18 20:22:59 · 1052 阅读 · 0 评论 -
c++通过组装电脑的例子展示纯虚抽象类(接口)的好处
给了一定规范,但又给你实现的自由原创 2018-04-19 17:05:42 · 360 阅读 · 0 评论 -
c++ 实现自己的vector容器(初级版)
简述STL的容器种类已经足够了,但实现一下有助于对容器的理解。这里实现的是非常弱智的版本,包括初始化,拷贝,插入,清除。代码#include<iostream>#include<cstring>using namespace std;template <typename T>class Vector{public: //...原创 2018-05-02 00:13:32 · 10379 阅读 · 4 评论 -
c++ 数据结构之实现单链表增删改查自定义Person对象
单链表实现如下单链表: 可以增删改查自定义的Person结构体,用C++,但用C语法写的。代码#include<cstdlib>#include<cstring>#include<cstdio>using namespace std;//懒得用gcc编译,直接在c++里面用c的格式来写//提示:malloc,free//注...原创 2018-05-02 16:41:21 · 601 阅读 · 0 评论 -
排序算法之(9)--八种常用排序算法效率对比
排序是数据处理中一种很重要也很常用的运算,一般情况下,排序操作在数据处理过程中要花费许多时间,为了提高计算机的运行效率,我们提出并不断改进各种各样的排序算法,这些算法也从不同角度展示了算法设计的重要原则和技巧。原创 2018-05-20 11:37:05 · 27784 阅读 · 3 评论