08 2020 档案

摘要:思想: 复杂度: O(logN) O(N) 堆的性质: 1: 堆中某个节点的值总是不大于或不小于其父节点的值; 2: 堆总是一棵完全二叉树。 堆分类为:大顶堆和小顶堆 解析: 第一步:建堆(举例大顶堆) 从父节点9开始从左往右,与左右孩子相比较,寻找比自己大的数,进行交换; 第二步:排序 将顶节点与 阅读全文
posted @ 2020-08-31 16:13 欧阳图图的少年成长记 阅读(180) 评论(0) 推荐(0)
摘要:思想: 每次选取最小或最大的数放在已排序的集合后面 完整代码 #include <stdio.h> void PrintSort(int * a, int n) { printf("\n"); int i = 0; for(i=0; i<n; i++) { printf(" %d ", a[i]); 阅读全文
posted @ 2020-08-31 15:57 欧阳图图的少年成长记 阅读(182) 评论(0) 推荐(0)
摘要:参考:https://wiki.jikexueyuan.com/project/easy-learn-algorithm/fast-sort.html 基本思想: 通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快 阅读全文
posted @ 2020-08-28 16:39 欧阳图图的少年成长记 阅读(148) 评论(0) 推荐(0)
摘要:中心思想: 依次比较相邻的两个数. 时间复杂度: 其它博文都没有讲过的一个重要知识点: 两两相比, 每比一次,最后一个就会被排好序,因此每一次比较的长度逐渐减小 每轮都是从头开始比较 完整代码 #include <stdio.h> // 最好的情况,正序 // 最坏的情况,倒序 void Print 阅读全文
posted @ 2020-08-28 15:48 欧阳图图的少年成长记 阅读(163) 评论(0) 推荐(0)
摘要:希尔排序的具体实现思路是:先将整个记录表分割成若干部分,分别进行直接插入排序,然后再对整个记录表进行一次直接插入排序。、 总结 : 不断缩小增量(gap)的排序过程 时间复杂度: 希尔排序相对来说,思路非常简单,但是很多网络文章,描述的及其麻烦,扰乱读者理解,这里我用最清晰方式解析; 注: int 阅读全文
posted @ 2020-08-28 14:05 欧阳图图的少年成长记 阅读(751) 评论(0) 推荐(0)
摘要:概念 设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。 它描述了在软件设计过程中的一些不断重复发生的问题,以及该问题的解决方案; 设计模式的本质是面向对象设计原则的实际运用,是对类的封装性、继承性和多态性以及类的关联关系和组合关系的充分理解 分类 设计模式有两种分类方法 阅读全文
posted @ 2020-08-24 14:25 欧阳图图的少年成长记 阅读(126) 评论(0) 推荐(0)
摘要:创建socket int socket(int af, int type, int protocol); // linux SOCKET socket(int af, int type, int prococol); // windows af/pf : 地址族 address family, IP 阅读全文
posted @ 2020-08-21 17:55 欧阳图图的少年成长记 阅读(214) 评论(0) 推荐(0)
摘要:七层模型 七层模型:物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。网络模型 : 对数据进行封装 socket编程: 在传输层上,可以使用tcp/udp协议 两台计算机进行通信时,必须遵守以下原则: 必须是同一层次进行通信,比如,A 计算机的应用层和 B 计算机的传输层就不能通信,因为它 阅读全文
posted @ 2020-08-21 16:42 欧阳图图的少年成长记 阅读(531) 评论(0) 推荐(0)
摘要:套接字理解 socket学习 == 计算机之间如何通信 socket 的原意是“插座”,在计算机通信领域,socket 被翻译为“套接字”,它是计算机之间进行通信的一种约定或一种方式。通过 socket 这种约定,一台计算机可以接收其他计算机的数据,也可以向其他计算机发送数据。 网络编程就是用代码将 阅读全文
posted @ 2020-08-20 14:30 欧阳图图的少年成长记 阅读(125) 评论(0) 推荐(0)
摘要:// 后续 阅读全文
posted @ 2020-08-20 11:56 欧阳图图的少年成长记 阅读(81) 评论(0) 推荐(0)
摘要:用二分查找法在有序表中找到正确的插入位置,是在折半插入排序的基础上改进,目的是减少排序过程中的移动次数; 基本思想: (1)另外设置一个同存储记录的数组大小相同的数组 d,将无序表中第一个记录添加进 d[0] 的位置上,然后从无序表中第二个记录开始,同 d[0] 作比较:如果该值比 d[0] 大,则 阅读全文
posted @ 2020-08-20 11:20 欧阳图图的少年成长记 阅读(591) 评论(0) 推荐(0)
摘要:二分查找 思想: 时间复杂度: O(log2n) // 二分查找 // 基础版 int BinarySearch(int * a, int l, int h, int find) { // a一定是有序的 while(l<=h) { // while(l<=h) l的初始化为0, h一般是sizeo 阅读全文
posted @ 2020-08-14 13:55 欧阳图图的少年成长记 阅读(320) 评论(0) 推荐(0)
摘要:思想: 将待排序的数据插入到前面已排好序的序列中、 时间复杂度: O(n^2) 看循环几次,一次就O(n) n此就O(n^2)、 #include <stdio.h> #include <stdlib.h> void PrintSort(int * a, int n) { int i; for(i= 阅读全文
posted @ 2020-08-14 10:16 欧阳图图的少年成长记 阅读(153) 评论(0) 推荐(0)
摘要:插入排序包括: 直接插入,折半插入,2-路插入,表插入,希尔排序等 时间复杂度所耗费的时间是:O(1) < O(logn) < O(n) < O(nlogn) < O(n2) < O(n3) <O(2n) < O(n!) <O(nn) 阅读全文
posted @ 2020-08-14 10:15 欧阳图图的少年成长记 阅读(124) 评论(0) 推荐(0)
摘要:输入输出重定向是通过修改文件指针实现的 重定向: 输入和输出 > 覆盖 >> 追加 fd>file fd与>之间不能有空格 fd表示为文件描述符,不写时默认为1 输出重定向 ls one>>log.txt 2>&1 #错误信息和正确信息保存在一个t文件 ls -l>>log.txt 2>>err.l 阅读全文
posted @ 2020-08-13 14:31 欧阳图图的少年成长记 阅读(200) 评论(0) 推荐(0)
摘要:函数定义 与 调用 #函数定义 #标准 function fun1() { echo "one" } #省略括号 function fun2 { echo "two" } #省略关键字 fun3() { echo "$@" } #函数调用 #无参数 fun1 fun2 #有参数 fun3 10 30 阅读全文
posted @ 2020-08-13 11:33 欧阳图图的少年成长记 阅读(1075) 评论(0) 推荐(0)
摘要:case in 语句 printf "input number:" read num case $num in 1) echo "one" ;; 2) echo "two" ;; *) echo "error" ;; esac (1) case、in 和 esac 都是 Shell 关键字,num 阅读全文
posted @ 2020-08-13 10:17 欧阳图图的少年成长记 阅读(188) 评论(0) 推荐(0)
摘要:==、>、< 在大部分编程语言中都用来比较数字,而在 Shell 中,它们只能用来比较字符串,不能比较数字其次,不管是比较数字还是字符串,Shell 都不支持 >= 和 <= 运算符, 那么在shell中,数值和字符串的比较是怎样的? (1)数值比较 -gt : > -lt : < -ge : >= 阅读全文
posted @ 2020-08-12 16:50 欧阳图图的少年成长记 阅读(162) 评论(0) 推荐(0)
摘要:(()) #(()) 只能进行整数运算 #普通用法 a=$((10+20)) echo $a #用做表达式 b=30 if (($a==$b));then echo "是的" else echo "不是" fi #逗号分隔 ((a=2+3, b=8+80)) echo $a $b echo $((a 阅读全文
posted @ 2020-08-12 15:56 欧阳图图的少年成长记 阅读(171) 评论(0) 推荐(0)