- 博客(11)
- 收藏
- 关注
原创 排序算法(二):选择排序
选择排序思想: 遍历一遍待排序数据,找到当前最大值位置,将当前最后一个元素与当前最大值交换,重复上述过程直到只剩下一个数据。 时间复杂度: O(n^2) 空间复杂度: O(1) 稳定性: 不稳定 void SelectSort(int* arr,int len) { int index = 0; for (int* p = arr; p < arr + len; p++) { int* q = arr; int max = 0; for (; q < arr + len - (
2020-11-26 17:14:49
138
原创 排序算法(六):快速排序的递归与非递归实现
快速排序思想: 在数据中找一个基准数据,将数据按照基准数据分成两部分,前一段比基准小后一段比基准大,按照同样的思路分别处理前一段和后一段数据直到数据有序。 递归实现: 时间复杂度 : O(nlog(n)) 空间复杂度 : O(log(n)) 稳定性 : 不稳定 int OneQuick(int* arr, int* start,int* end) { int tmp = *start; while (start < end) { while (start < end &&
2020-11-26 16:52:51
320
原创 排序算法(五):堆排序
堆排序基本思想: 将数组中的数据调整成一棵最大堆, 然后将根节点的数据和最后位置的节点交换, 接着除过最后一个位置的数据外,在将剩余的数据调整成 最大堆。重复上述过程直到只有一个数据没有交换。 时间复杂度: O(nlog(n)) 空间复杂度: O(1) 稳定性: 不稳定 void OneAdjust(int* arr, int len, int root) { int tmp = *(arr + root); int* p = arr + root; int* q = arr + 2 * root +
2020-11-25 21:33:44
158
原创 排序算法(四):希尔排序--增量排序
希尔排序思想: 将现有数据分为d个组,在每个分组内使用直接插入排序算法,使得整个数据段越来越有序。 接着继续将数据分组并使用直接插入排序(分组会越来越小),直到分组为1。(每个分组数一般互质) 时间复杂度: O(n^1.3–1.5) 空间复杂度: O(1) 稳定性: 不稳定 void Shell(int* arr, int len, int group) { int tmp = 0; for (int* p = arr + group; p < arr + len; p++) { tmp =
2020-11-25 21:24:49
1095
原创 排序算法(三):直接插入排序
直接插入排序思想: 将数据分成两部分,前一部分已经有序(初始只有一个数据),后一部分无序,从后一部分数据中拿出一个数据插入有序数据中使有序部分数据依旧有序。 时间复杂度: O(n^2) 空间复杂度: O(1) 稳定性: 稳定 void InsertSort(int* arr, int len) { int tmp = 0; for (int* p = arr + 1; p < arr + len; p++) { tmp = *p; for (int* q = p - 1; q >=
2020-11-25 21:17:51
190
原创 排序算法(一):冒泡排序
冒泡排序算法的思想: 将数组中相邻两元素进行比较,前一个比后一个大就将两个元素交换,直到将最大元素交换到数据最后。 冒泡排序时间复杂度: O(n^2) 空间复杂度: O(1) 稳定性: 稳定 void BubbleSort(int* arr, int len) { for (int* p = arr; p < arr + len; p++) { bool flag = true; for (int* q = p; q < arr + len; q++) { if (*p &
2020-11-25 20:53:05
123
原创 学习笔记0629
C语言规定,else总是与它前面最近的if配对 switch()参数类型不能为浮点数,字符串。(必须是整型类型) case标签也必须是常量表达式并且必须是唯一常量 switch中default不是必须的,没有时所有case都匹配失败,那么switch中什么都不执行 自定义函数由 函数返回类型+函数名+形参列表+函数体构成 函数调用中发生的数据传递是单向的,只能把实参的值传递给形参,而不能把形参的值返回给形参,而不能把形参的值反向的传递给实参 逗号表达式a =(11,12,13);a = 13; 空语句 wh
2020-07-01 22:16:07
167
原创 判断年份是否为闰年,判断月份的天数
判断年份是否为闰年,判断月份天数 选择1输入年份判断是否为闰年 选择2输入月份判断其天数 #include <stdio.h> int Leap_year(int a) //判断年份是否是闰年是返回1否则0 { if ((a % 4 == 0 && a % 100 != 0) || a % 400 == 0) { return 1; } else { return 0; }
2020-06-27 00:41:03
934
原创 辗转相除法(欧几里得算法)求最大公约数
辗转相除法 欧几里德算法又称辗转相除法,是指用于计算两个正整数a,b的最大公约数。 求公约数最常见的方法 下面展示一些 内联代码片。 #include <stdio.h> int main() { int a,b,c; scanf("%d",&a); scanf("%d",&b); while(b!=0) { c = a % b; a =
2020-06-23 22:49:08
805
原创 学习笔记
声明和定义的重要区别 定义创建了对象并为这个对象分配一块内存,而声明的时候是没有分配内存空间的。 局部变量和全局变量采取就近原则 define和const的区别 define定义宏常量,没有类型,不分配空间,预编译时进行宏替换,宏名相当于自注释 const关键字修饰的变量称为常变量,可读不可写 const有数据类型而define没有,编译器可以对const进行类型检查 可见性(作用域)和生存期 可见性(作用域):指标识符能够被使用的范围,只有在作用域内标识符才可以被使用。 此阶段针对编译和链接过程。 1)函
2020-06-23 22:48:40
149
原创 VMware虚拟机安装Ubuntu Desktop完整过程记录
VM ware虚拟机安装Ubuntu Desktop完整过程 在安装完VM ware虚拟机之后 到Ubuntu官网下载系统镜像 打开VM ware找到文件,新建,选择自定义(高级)之后下一步 之后继续下一步 新的改变 我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客: 全新的界面设计 ,将会带来全新的写作体验; 在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式 进行展示; 增加了
2020-06-21 01:43:20
836
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅