自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 收藏
  • 关注

原创 堆排序

一、什么是堆?堆是一种任意节点不大于或者不小于父节点的完全二叉树结构。由堆的定义可以知道堆的父节点一定大于或者小于其孩子节点,同时每个结点的左子树和右子树都是一个二叉堆(都是最大堆或最小堆)。其中根节点最大的堆叫做最大堆或大根堆,根节点最小的堆叫做最小堆或小根堆。二、堆排序基本思想1) 建立最大堆(最小堆),此时堆顶元素是该组数据中最大数据(最小数据)2) 移除堆顶元素,重新建立最大堆(最小堆)3) 重复步骤2)4) 数据全部移除,移除数据构建成有序序列三、示例分析 (a

2021-01-27 15:01:23 214

原创 插入排序和希尔排序学习

一、插入排序基本思想插入排序就是每一步都将一个待排数据按其大小插入到已经排序的数据中的适当位置,直到全部插入完毕。插入排序步骤:1) 从第一个元素开始,该元素认为是已经被排序的2) 取出下一个元素(key),在已经排序的元素序列从后向前扫描3) 如果该元素大于新元素(key),将该元素移到下一个位置4) 重复步骤3,直到找到已排序的元素小于或者等于新元素(key)的位置5) 将新元素(key)插入到该位置6) 重复步骤2 - 5二、示例分析三、代码实现#

2021-01-26 16:17:40 125

原创 选择排序

一、选择排序基本思想首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。二、示例分析...

2021-01-26 10:20:21 136

原创 冒泡排序

一、冒泡排序基本思想依次将数组中相邻两个元素比较,并按要求的排序对两个元素进行交换,从而将最大/最小的数推至最前或者最后,对余下的数重复上述步骤,最终获得需要的排序顺序。二、示例分析三、代码实现#include <iostream>#include <assert.h>using namespace std;void BubbleSort(int* arr,int size){ assert(arr); for (int i = siz

2021-01-21 15:40:24 121

原创 memcpy和memmove的区别

memcpy和memmove函数作用都是拷贝一定长度内存的内容,函数存在头文件string.h中,函数原型如下://将src指向的内存内容的count长度内容拷贝到dst指向的内存中void* memcpy(void* dst, const void* src, size_t count);void* memmove(void* dst, const void* src, size_t count);两个函数作用一样,但是当拷贝内存发生重叠时,memmove能够保证拷贝结果的正确,memcpy

2021-01-21 10:38:01 239

原创 内存管理之程序在内存中的分布

代码段(.txt):也称文本段(Text Segment),存放着程序的机器码和只读数据,可执行指令就是从这里取得的。如果可能,系统会安排好相同程序的多个运行实体共享这些实例代码。这个段在内存中一般被标记为只读,任何对该区的写操作都会导致段错误(Segmentation Fault)。已初始化的数据段(.data):用来存放保存已初始化变量的全局变量和静态变量,数据段在编译时分配。未初始化的数据段(.bbs):用来保存未初始化变量的全局变量和静态变量,数据段在编译时分配。堆(Heap):用来..

2021-01-18 09:52:10 321

原创 指针函数和函数指针介绍

一、指针函数1、定义指针函数就是返回指针的函数。其本质是一个函数,而该函数返回值是一个指针。语法形式:返回值类型名 * 函数名 (函数参数)int* fun(int i, int j);2、示例#include <stdio.h>#include <assert.h>#include <string.h>char* myStrcpy(char *dest, const char *src){ assert(dest);

2021-01-15 16:49:34 2065

原创 数组指针和指针数组学习

一、数组指针1、定义数组指针是指向数组的指针。首先它是一个"指针",其次,数组修饰这个指针,表示这个指针存放一个数组的首地址,或者说这个指针指向一个数组的首地址。语法形式:类型 (*指针变量名) [数组长度]int (*p)[5];2、运算由于数组指针是一个指针,因此可以进行加减运算,指针的加可以指向数组的下一个元素,指针的减可以指向数组的上一个元素。3、内存结构4、应用1) 指向一维数组#include <stdio.h>int main().

2021-01-15 15:47:04 280

原创 C++引用简单学习

1、什么是引用?引用是给一个已经定义的的变量取别名,而不是定义一个新的变量。引用定义格式:类型& 引用变量名 = 已定义变量2、引用的特点有哪些?1) 多个变量可以引用一个变量int a = 10;int& b = a;int& c = a;cout<<a<<" "<<b<<" "<<c<<endl; // 10 10 102) 引用必须初始化int& a; // 语

2021-01-13 21:26:29 1776 1

原创 C语言动态内存管理

C语言动态内存管理程序开发过程中,很多情况是不能够预先知道需要多大的内存,此时内存就需要随用随获取。比如链表的插入,不确定大小数组的建立。C语言中动态内存获取的接口函数在<stdlib.h>头文件中,下面就来详细讲解下C语言中内存的动态获取。1、malloc函数原型:void *malloc(size_t size); //调用实际生产空间比期望的大函数作用:malloc函数向内存申请一块连续的大小为size字节的可用空间,并返回指向这块空间的指针函数返回值:开辟成功.

2021-01-13 16:29:24 177 1

原创 C语言关键字static详解

C语言关键字static作用详解:1、隐藏当同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。2、static修饰变量能够保持变量内容的持久,static变量的记忆功能和全局生存期static变量存储在静态存储区,有静态局部变量和静态全局变量,在程序运行期间始终存在。a) 静态局部变量静态局部变量在函数内定义,但不像自动变量那样,在作用域范围就存在,退出作用域时就消失。静态局部变量始终存在着,也就是说它的生存期为整个源程序。虽然静态局部变量的生存期为整个源

2021-01-13 15:16:33 250 1

原创 C语言关键字const详解

C语言关键字const详解一、const修饰普通变量1、const int a = 10;const修饰了int,表示这段代码定义的变量,最后取的是int型且值为10,不可被后面的代码修改。2、int const a = 10;const修饰了变量a,表示这段代码定义的变量,最后取的值是int型且为10,不可被后面的代码修改。二、const修饰指针变量1、const int* p1;const修饰int,表示指针指向的对象为常量,*p1所指向的对象值不能通过*p1来修改,但是可.

2021-01-13 14:44:18 629

原创 C语言实现链表及链表常见面试题

List.h#ifndef List_h#define List_hstruct ListNode{ int data; struct ListNode* pNext;};void InitList(struct ListNode** pHead); //初始化struct ListNode* CreateNode(int data);//创建结点void PushBack(struct ListNode** pHead, int data);//尾插void PopBa

2021-01-05 15:36:30 296

原创 Linux网络编程示例之多线程

server.c#include <netdb.h>#include <sys/socket.h>#include <unistd.h>#include <string.h>#include <stdio.h>#include <stdlib.h>#include <memory.h>#include <signal.h>#include <errno.h>#include &lt

2020-07-08 19:50:03 370

原创 Linux网络编程示例之多进程

server.c#include <stdio.h>#include <sys/socket.h>#include <sys/types.h>#include <errno.h>#include <signal.h>#include <arpa/inet.h>#include <unistd.h>#include <fcntl.h>#include <stdlib.h>#inclu

2020-07-08 18:54:49 281

原创 Linux网络编程示例

Linux网络编程示例服务端代码 server.c#include <stdio.h>#include <sys/socket.h>#include <sys/types.h>#include <errno.h>#include <signal.h>#include <arpa/inet.h>#include <unistd.h>#include <fcntl.h>#include <s

2020-05-27 21:18:08 428

原创 Linux网络编程API

一、socket函数作用:建立一个新的socket套接字函数原型:int socket(int domain,int type, int protocol)函数参数:1)domain:表示使用何种地址协议类型。 AF_INET:IPV4,AF_INET6:IPV6 2)type:SOCK_STREAM TCP面向数据流 SOCK_DG...

2020-05-27 19:26:29 459

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除