
c++
文章平均质量分 82
z_xiao_xue
这个作者很懒,什么都没留下…
展开
-
网易---优雅的点
小易有一个圆心在坐标原点的圆,小易知道圆的半径的平方。小易认为在圆上的点而且横纵坐标都是整数的点是优雅的,小易现在想寻找一个算法计算出优雅的点的个数,请你来帮帮他。例如:半径的平方如果为25优雅的点就有:(+/-3, +/-4), (+/-4, +/-3), (0, +/-5) (+/-5, 0),一共12个点。 输入描述:输入为一个整数,即为圆半径的平方,范围在32位int范围内原创 2016-11-28 17:38:23 · 312 阅读 · 0 评论 -
排序算法(一):冒泡排序
排序的算法有很多,例如直接插入排序,希尔排序,冒泡排序,选择排序,快速排序,堆排序等等。最简单基础就是冒泡排序了,关于排序hi有一个系列。今天是第一篇,主要讲冒泡排序算法思想以及从各个方面对它进行优化。冒泡排序:原理举例:设数组长度为N。1.比较相邻的前后二个数据,如果前面数据大于后面的数据,就将二个数据交换。2.这样对数组的第0个数据到N-1个数据进行一次遍历后,最大原创 2016-06-01 13:04:42 · 573 阅读 · 0 评论 -
排序算法(二):选择排序
之前给大家分享了排序算法里面比较简单的冒泡排序,今天来分享一下选择排序的算法选择排序的思想:(以升序为例)在一组数中选出最大的数放到第一个位置,或者选出最小的数放到最后一个位置,在选取剩余元素的最大数放到第二个位置,或选出剩余元素中的最小值放到倒数第二哥位置,依次往下选取,直到遍历完数组为止。具体如图所示:代码实现:void SelectSort(int *a, size_t size原创 2016-06-02 13:36:22 · 672 阅读 · 1 评论 -
C语言到c++的第一步 注释转换
1.普通情况 /*int i = 0; 2.换行问题 /*int i = 0;*/int j = 0; /*int i = 0;*/ int j = 0; 3.匹配问题 /*int i = 0;/*xxxxx*/原创 2016-06-04 23:16:40 · 336 阅读 · 0 评论 -
单链表的简单操作
单链表是C语言,c++和数据结构中的很重要的一个部分,也有很多实现它的方法,这些算法代码的实现都大同小异,我在这里就用c语言和c++两种不同的方法实现一下链表的基本操作。下面是c++和C语言的两种链表结构的定义c++方式#include #include #include typedef int DataType;typedef struct SListNode{ DataT原创 2016-06-12 12:36:03 · 665 阅读 · 0 评论 -
排序算法(三)插入排序
插入排序今天来更新排序算法中的第三种算法------插入排序一,插入排序介绍 插入排序是基于比较的排序。所谓的基于比较,就是通过比较数组中的元素,看谁大谁小,根据结果来调整元素的位置。因此,对于这类排序,就有两种基本的操作:①比较操作; ②交换操作其中,对于交换操作,可以优化成移动操作,即不直接进行两个元素的交换,还是用一个枢轴元素(tmp)将当前元素先保存原创 2016-06-13 14:27:43 · 352 阅读 · 0 评论 -
热门题---链表面试题总结
单链表一直是面试中的重点,今天就把常见的单链表面试题总结了一下冒泡排序:先将tail置为空,让prev和cur不停的往前走,条件cur不等于tail 控制每一趟冒泡,找出每次的最大值,再用prev不等于tail控制每一层冒泡,每趟交换完成后将prev的值给tail,让tail 不停的往前走,代码实现void Bubble(pLinkList list){ pLink原创 2016-06-24 00:34:20 · 374 阅读 · 0 评论 -
模拟实现String类----传统写法
面试时经常会遇到一道题,就是写一个简单的String类,很多人不假思索的就给出了下面这样的写法class String{ String(char* str) :_str(new char[strlen(str)]) {} String(const String& s) :_str(s._str) {} String operator=(const String& s) {原创 2016-07-08 13:33:53 · 1079 阅读 · 0 评论 -
模拟实现String类--->现代写法
已经介绍过模拟实现一个String类的传统写法,现在,我们在来讨论一下使用现代写法模拟实现一个String类,现代写法能够更好更方便的管理代码,在有些地方也更高效下面是实现的代码:class String{public: /*String(const char* str) :_str(new char[strlen(str)+1]) { strcpy(_str, str);原创 2016-07-08 13:42:03 · 547 阅读 · 0 评论 -
模拟实现String类---->写时拷贝
之前分享了模拟实现String类的传统写法和现代写法,今天再来分享一下写时拷贝的方法,写时拷贝主要用在一下场景中需要大量拷贝构造,析构同样的空间,这样,传统写法和现代写法中国不断的开辟空间,析构空间,效率太低void Test(){ String s1("s1"); for (int i = 0; i < 1000; i++) { String s2(s1); }}写时原创 2016-07-08 14:04:01 · 447 阅读 · 0 评论 -
面试热门题C与C++的区别-------指针和引用
在面试过程中,C语言和C++的区别总是面试官的侧重点,而指针和引用更是容易被问到,指针和引用的区别很简单,但很少有人能有全面的,有层次有条理的回答这个问题,所以有条理的总结归纳就显得尤为重要。先来了解什么是指针,什么是引用指针:存储内存中某一块空间地址的变量。引用:引用不是定义一个新变量,而是给一个已经定义的变量起一个新的别名。定义的格式:指针:类型 *变量名 = 已有变量地址原创 2016-09-11 21:34:29 · 2019 阅读 · 0 评论 -
如何创建一个类只能在堆(栈)上建立对象
在C++中,类对象的建立方式有两种,一种是静态建立类对象,如A a;另一种是动态建立类对象,如A* p = new A;这两种方式是有区别的: 静态建立类对象:是指全局对象,静态对象,以及分配在栈区域内的对象,编译器对它们的内存分配是在编译阶段就完成的,是通过直接移动栈顶指针,挪出适当的空间,然后在这片内存空间上调用构造函数形成一个栈对象。使用这种方法,直接调用类的构造函数。原创 2016-11-08 15:13:00 · 2665 阅读 · 0 评论 -
网易---跳石板
小易来到了一条石板路前,每块石板上从1挨着编号为:1、2、3.......这条石板路要根据特殊的规则才能前进:对于小易当前所在的编号为K的 石板,小易单次只能往前跳K的一个约数(不含1和K)步,即跳到K+X(X为K的一个非1和本身的约数)的位置。 小易当前处在编号为N的石板,他想跳到编号恰好为M的石板去,小易想知道最少需要跳跃几次可以到达。例如:N = 4,M = 24:4->6-原创 2016-11-28 17:41:45 · 326 阅读 · 0 评论 -
操作系统---进程调度算法
调度类型---OS的三级调度1.作业调度---高级调度(用于决定将外存上处于后备队列中的哪些作业调入内存,处于内存就绪队列,准备执行)2.进程调度---低级调度(决定就绪队列中哪个进程将获得处理机)3.交换调度---中级调度(目的是提高内存的利用率和系统吞吐量)吞吐量指单位时间内处理工作量的总和进程调度的方式:1.非剥夺方式(非抢占方式)一旦占有cpu,直至完成后阻原创 2016-11-27 00:37:17 · 697 阅读 · 0 评论