- 博客(43)
- 资源 (1)
- 收藏
- 关注
原创 快速排序
1.基本思想通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。2.单趟排序分析我这里用的是左右指针的方法,下面具体的步骤以及代码的实现 代码实现:int PortSort(int* arr, int begin, int end)//左右指针法{
2017-08-23 16:22:06
263
原创 冒泡排序
冒泡排序算法的运作如下: 1.比较相邻的元素。如果第一个比第二个大,就交换他们两个。 2.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。 3.针对所有的元素重复以上的步骤,除了最后一个。 4.持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。 void BubbleSort(int* arr, int size){
2017-08-23 12:15:43
268
原创 选择排序
1.选择排序,每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。oid SelectSort(int* arr, int size){ int i, j, min, tmp; for (i = 0; i < size - 1; i++) { min = i; //查找最小值
2017-08-22 15:48:19
352
原创 插入排序
1.直接插入排序#include <stdio.h>void InertSort(int* arr, int size){ int pos = 0; for (int i = 1; i < size; i++) { int tmp = arr[i]; pos = i-1; while (pos >= 0 && arr[pos
2017-08-18 21:56:07
250
转载 如何快速转载CSDN中的博客
文章来源:http://blog.csdn.net/bolu1234/article/details/51867099 前言 对于喜欢逛CSDN的人来说,看别人的博客确实能够对自己有不小的提高,有时候看到特别好的博客想转载下载,但是不能一个字一个字的敲了,这时候我们就想快速转载别人的博客,把别人的博客移到自己的空间里面,当然有人会说我们可以收藏博客啊,就不需要转载,(⊙o⊙)… 也对
2017-07-11 16:10:19
225
原创 shell实现进度条 与 shell中的循环语句
1.shell中的循环语句 (1)for列表循环 当变量值在列表里,for循环即执行一次所有命令,使用变量名访问列表中取值。命令可为任何有效的shell命令和语句。变量名为任何单词。for 变量名 in 列表do 命令done(2)for非列表循环 条件判断成立时执行程序,直到条件判断不成立,退出循环for [ 条件判断 ]do 命令done(3)类c风格for循环 这种循
2017-06-29 15:29:27
542
原创 linux shell中的 eval , ` ` , $() 命令
1.倒引号与 $()的用法**(倒引号)括起来的是一条命令,shell应该先执行该命令,然后将输出结果立刻代换到当前命令行中,命令代换也可以用$() 测试用例** 运行结果 上述测试用例都是先执行倒引号与$()里面的命令,然后再执行echo命令2.“(倒引号)与$()用法的区别测试例子 运行结果 **通过上述的测试,我们可以发现: (1).反引号齐本身就对\进行了转义,保
2017-06-28 09:52:11
973
转载 socket的基本函数
文章链接 socket的基本操作:(1)socket()函数:(2)bind()函数:(3)listen(),connect()函数;(4)accept()函数;(5)socket中的发送与接收函数:(6)close()函数:(7)服务器上调用socket函数:(8)客户端调用socket函数:(9)IP地址转换函数:inet_pton, inet_ntop, inet_addr
2017-06-20 16:05:32
468
原创 TCP的四种定时器
TCP使用的四种计时器:1.重传计时器 为了控制丢失的报文段或丢弃的报文段,也就是对报文段确认的等待时间。当TCP发送报文段时,就创建这个特定报文段的重传计时器,可能发生两种情况:若在计时器超时之前收到对报文段的确认,则撤销计时器;若在收到对特定报文段的确认之前计时器超时,则重传该报文,并把计时器复位;2.坚持计时器 假设TCP收到了一个窗口大小为0报文段,发送TCP就停止传送报文段,直到接收T
2017-06-20 15:25:15
380
转载 CSDN-markdown编辑器语法——字体、字号与颜色
来自这里写链接内容 Markdown是一种可以使用普通文本编辑器编写的标记语言,通过类似HTML的标记语法,它可以使普通文本内容具有一定的格式。但是它本身是不支持修改字体、字号与颜色等功能的! CSDN-markdown编辑器是其衍生版本,扩展了Markdown的功能(如表格、脚注、内嵌HTML等等)!对,就是内嵌HTML,接下来要讲的功能就需要使用内嵌HTML的方法来实现。字
2017-06-19 17:34:05
258
原创 端口号的分类
1.什么是端口号? 在网络技术中,端口(Port)包括逻辑端口和物理端口两种类型。物理端口指的是物理存在的端口,如ADSL Modem、集线器、交换机、路由器上用 于连接其他网络设备的接口,如RJ-45端口、SC端口等等。逻辑端口是指逻辑意义上用于区分服务的端口,如TCP/IP协议中的服务端口,端口号的范围从0到65535,比如用于浏览网页服务的80端口,用于FTP服务的21端口等。由于物理端口和
2017-06-19 17:24:39
825
原创 TCP报文首部URG和PSH的区别
TCP报文首部 URG(紧急位):当URG = 1时表明紧急指针字段有效,他告诉系统此报文段中有紧急数据,应尽快传送,而不要按原来的排队顺序来传送,发送方的TCP就把紧急数据放到本报文段数据的最前面。URG标志位要与首部中的紧急指针字段配合使用,紧急指针指向包内数据段的某个字节(数据从第一字节到指针所指字节就是紧急数据,不进入接收缓冲就直接交给上层进程,余下的数据要进入接收缓冲的)PSH(急迫位)
2017-06-19 16:57:19
751
原创 TCP的三次握手与四次挥手
1.TCP的连接建立1.1TCP连接建立图用三次握手建立TCP连接 1.2TCP三次握手过程(1)A的TCP客户进程向B发出连接请求报文段。这是首部的同步位SYN=1,同时选择一个初始序号seq=x (2)B收到连接请求报文段后,如果同意建立连接,向A发送确认。报文段中把ACK(确认)和SYN(同步)置1,确认号是ack=x+1,自己的序号是seq=y (3)TCP客户进程收到B的确认后,向B
2017-06-19 16:33:03
310
原创 守护进程
一、守护进程的概念 守护进程也称精灵进程(Daemon),是运行在后台的一种特殊进程。它独立于控制终端,并且周期性的执行某种任务或者等待处理某些发生的时间。守护进程是一种很有用的进程。Linux的大多数服务器就是用守护进程实现的。比如,Internet服务器inetd,Web服务器httpd等。同时,守护进程完成许多系统任务。比如,作业规划进程crond等。 二、守护进程的查看 查看守护进程的
2017-06-14 17:22:53
228
原创 文件描述符与文件指针
一. 什么是文件描述符(fd) 文件描述符在形式上是一个非负整数。实际上,它是一个索引值,指向内核为每一个进程所维护的该进程打开文件的记录表。当程序打开一个现有文件或者创建一个新文件时,内核向进程返回一个文件描述符。文件描述符的有效范围是 0 到 OPEN_MAX。 习惯上,标准输入(standard input)的文件描述符是 0,标准输出(standard output)是 1,标准错误
2017-05-11 10:42:44
571
原创 文件的复制,移动和删除命令(cp,mv,rm)
1.文件的复制1. 命令参数:命令格式:cp [-adfilprsu] 源文件(source) 目标文件(destination) cp [option] source1 source2 source3 … directory 参数说明: -a:是指archive的意思,也说是指复制所有的目录 -d:若源文件为连接文件(link file),则复
2017-05-10 10:37:35
713
原创 打印100~200之间的素数
打印100~200之间的素数 (素数:除了1和它本身不再有其他的因数)#define _CRT_SECURE_NO_WARNINGS 1#include <stdlib.h>#include <math.h>int main(){ int i = 0; int j = 0; int count = 0; for (i = 101; i <= 200; i+=2
2017-05-02 10:14:26
339
原创 bitmap(位图)
1.什么是位图?来自于《编程珠玑》。所谓的Bit-map就是用一个bit位来标记某个元素对应的Value, 而Key即是该元素。由于采用了Bit为单位来存储数据,因此在存储空间方面,可以大大节省。比如: 申请一个int型的空间,则有4Byte,32bit。输入1,2 , 3 ,4 0000 0000 0000 0000 0000 0000 0000 0000 输入1 0000
2017-04-23 11:46:17
840
原创 huffman树及其应用
1.huffman树基本概念Huffman树,又称为最优二叉树,是加权路径长度最短的二叉树。路径:在一棵树中,从一个结点往下可以达到的孩子或孙子结点之间的通路,称为路径。如下图,(b)图中红色线标出的是树的一条路径路径长度:通路中分支的数目称为路径长度。如下图,(b)中红线标注的路径的路径长度为2。权值:在数学领域,权值指加权平均数中的每个数的频数,也称为权数或权重。 计算机领域中(数据结构)
2017-04-10 11:43:47
1059
原创 linux下的三个时间(Atime,Mtime,Ctime)
Linux系统文件有三个主要的时间属性,分别是ctime(change time), atime(access time), mtime(modify time) atime:读取或执行文件时更改 mtime:写入文件时更改 ctime:更改文件属性时更改1.touch一个文件,查看三个时间 2.访问myfile,查看三个时间 atime改变 3.修改myfile内容,
2017-04-08 10:09:52
441
原创 find指令
linux下find指令在目录结构中搜索文件,并执行指定的操作。1.命令格式find pathname -options [-print -exec -ok ···] 既:find [查找目录] [查找规则] [查找完成后的操作]2.命令功能用于在文件树种查找文件,并作出相应的处理(可能访问磁盘)3.命令参数pathname:find命令所查找的目录路径。 -print:find命令将匹配的文
2017-04-06 19:23:23
203
原创 AVL树
1.AVL树的概念AVL树 AVL树又称为高度平衡的二叉搜索树,是1962年有俄罗斯的数学家G.M.Adel’son-Vel’skii和E.M.Landis提出来的。它能保持二叉树的高度平衡,尽量降低二叉树的高度,减少树的平均搜索长度AVL树的性质 1.左子树和右子树的高度之差的绝对值不超过1 2.中的每个左子树和右子树都是AVL树 3.每个节点都有一个平衡因子(balance fact
2017-04-06 13:31:06
246
原创 堆的应用
此文章用到了之前堆的建立的代码,下面是链接 堆的建立1.优先级队列优先级队列 是不同于先进先出队列的另一种队列。每次从队列中取出的是具有最高优先权的元素。#pragma once#include <cassert>#include <iostream>#include <cstdlib>#include "Heap.h"using namespace std;template <class
2017-03-25 11:22:58
341
原创 c++实现堆
堆数据结构是一种数组对象,它可以被视为一棵完全二叉树结构。堆结构的二叉树存储是 最大堆:每个父节点的都大于孩子节点。 最小堆:每个父节点的都小于孩子节点。 比如有一个数组 那么我们就相当于创建了一颗完全二叉树 如果要建最大堆,则如下图所示 如果要建最小堆,则如下图所示 代码实现:#pragma once#include <vector>#include <iostream>
2017-03-23 19:10:11
620
原创 linux下的权限
一. Linux权限管理1、 文件访问者的分类( 人) a) 文件和 文件目录的所有者:u—User b) 文件和 文件 目录的所有者所在的组的 用户:g—Group c)其它 用户:o—Others 2、 文件访问权限的种类(事物属性) a) 读(r/4):Read对 文件 而 言,具有读取 文件内容的权限;对 目录来说,具有浏览该 目录信息的权限 b) 写(w/2):Writ
2017-03-23 11:44:34
365
原创 线索化二叉树
二叉树是一种非线性结构,遍历二叉树几乎都是通过递归或者用栈辅助实现非递归的遍历。用二叉树作为存储结构时,取到一个节点,只能获取节点的左孩子和右孩子,不能直接得到节点的任一遍历序列的前驱或者后继。 为了保存这种在遍历中需要的信息,我们利用二叉树中指向左右子树的空指针来存放节点的前驱和后继信息.二叉树的结构enum PointerTag{ THREAD, //线索化指针的标记
2017-03-23 09:18:58
254
原创 二叉树的非递归遍历
void PrevOrder_NonR()//非递归前序遍历 { if (_root == NULL) return; stack<Node*> s; Node* cur = _root; while ((cur != NULL) || (!s.empty())) {
2017-03-21 19:52:56
417
原创 二叉树的简单实现
二叉树的简单实现(1)#include <iostream>#include <queue>#include <cstdlib>using namespace std;template<class T>struct BinaryTreeNode{ BinaryTreeNode<T>* _left; BinaryTreeNode<T>* _right; T _date
2017-03-20 12:04:16
288
原创 c++ 之菱形继承
1.什么是菱形继承 俩个子类继承同一个父类,而又有子类同时继承这俩个子类,如下图所示; #include #include using namespace std;class AA{public: int _aa;};class BB:public AA{public: int _bb;};class CC:public AA{public:
2017-02-15 22:17:45
283
原创 注释转换
注释转换的功能:可将注释方式总结为7中://1.一般情况/* int i = 0; *///2.换行问题/* int i = 0; */ int j = 0;/* int i = 0; */int j = 0;//3.匹配问题/* int i = 0; /*xxxxxxx*///4.多行注释问题/*int i
2016-12-09 18:40:18
319
原创 c语言实现静态顺序表
头文件如下:#ifndef _S_L#define _S_L#include #include #include #pragma warning(disable:4996)#define MAX_SIZE 10typedef int DataType;typedef struct SeqList{ DataType array[MAX_SIZE];//存储数据的数
2016-12-09 09:59:41
274
原创 写一个递归函数DigSun(n),输入一个非负数字,返回组成他的数字之和, 例如,调用 DigSun(1729),则返回1+7+2+9,它的和是19
//写一个递归函数DigSun(n),输入一个非负数字,返回组成他的数字之和,//例如,调用 DigSun(1729),则返回1+7+2+9,它的和是19#include int DigSun(n){ int sum = 0; int m = 0; int num = n; if(num) { m = n%10; num = num/10; sum
2016-11-12 21:09:08
964
原创 编写一个函数实现n^k,使用递归实现
//编写一个函数实现n^k,使用递归实现#include int fun(int n,int k){ int sum = 0; if(k == 0) { sum = 1; } else { sum = n*fun(n,k-1); } return sum;}int main(){ printf("%d",fun(2,2)); return 0;}
2016-11-12 20:52:45
333
原创 c语言实现strcpy
#include #include #include char *my_strcpy(char *dest,const char *src){ assert(dest); assert(src); char *tmp = dest; while((*dest++ = *src++)!='\0'); return tmp;}int main(){ char a[20];
2016-11-12 20:17:30
588
原创 c语言实现冒泡排序
c语言实现冒泡排序 #include #include void show(int arr[], int len){ assert(arr); assert(len > 0); int i = 0; for (; i < len; i++) { printf("%d ", arr[i]); } printf("\n");}void swap(int *a ,in
2016-11-06 20:21:03
324
原创 c语言实现数组的逆置
c语言实现数组的逆置 #include #include void swap(int *a ,int *b){ int tmp = *a; *a = *b; *b = tmp;}void show(int arr[], int len){ assert(arr); assert(len > 0); int i = 0; for (; i < len; i++){ pr
2016-11-06 20:08:20
5993
原创 调整数组使奇数全部都位于偶数前面
输入一个整数数组,实现一个函数,来调整该数组中数字的顺序使得数组中所有的奇数#include #include void printf_arr(int *arr,int len){ assert(arr); assert(len > 0); int i = 0; for(i = 0; i < len; i++) { printf("%4d",arr[i]); } prin
2016-11-06 19:58:48
285
原创 有一个二维数组杨氏矩阵,数组的每行从左到右是递增的,每列从上到下是递增的,在这样的数组中查找一个数字是否存在
有一个二维数组杨氏矩阵,数组的每行从左到右是递增的,每列从上到下是递增的,在这样的数组中查找一个数字是否存在#include #define ROW 4#define COL 4int Yang(int arr[ROW][COL],int val){ int i = 0; int j = COL - 1; int tmp = arr[i][j]; while(1) { i
2016-11-06 19:33:24
1820
原创 一个字符串中查找第一个只出现一次的字符 ,时间复杂度为O(N)
一个字符串中查找第一个只出现一次的字符 ,时间复杂度为O(N)#include #include char first_single(const char *str){ int asc[255] = {0}; int i; for(i = 0; str[i]!='\0';i++) { asc[str[i]]++; } for(i = 0; str[i]!='\0';
2016-11-06 19:28:32
913
原创 交换俩个数组的内容(数组大小一样)
//交换俩个数组中的内容(数组一样大)#include int main(){ int arr1[] = {1,2,3,4,5,6,7}; int arr2[] = {9,8,7,6,5,4,3}; int i; int len = sizeof(arr1) / sizeof(arr1[0]); printf("before\n"); for (i = 0; i < len;
2016-09-26 16:46:37
348
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人