摘要: 指向函数的指针定义规则是这样的: int (*p)(int,int); 先定义这个函数指针的返回类型,然后在括号内定义这个指针的名称,在第二个括号内标记需要传入的参数的类型 若传入的参数类型为float和double,那么就改为 int (*p)(double,float); 对于函数指针的初始化, 阅读全文
posted @ 2020-06-28 19:03 雾漫大武汉 阅读(437) 评论(0) 推荐(0) 编辑
摘要: 说白了数组就是一个法棍,二分法每一次都朝当前面包块中心切一刀,看这一刀有没有刚好切到夹心,没切到夹心就根据夹心的痕迹判断下一刀该切到哪一边的中心,以此循环。 二分法排序有一个要求:当前需要查找的数组一定需要是有序的! 这就可以用到我上一个博客写的qsort函数了,qsort()是非常方便的自带函数, 阅读全文
posted @ 2020-06-23 18:34 雾漫大武汉 阅读(227) 评论(0) 推荐(0) 编辑
摘要: 对于qsort()函数,stdlib.h的描述很有意思: void qsort(void*base,size_t num,size_t width,int(__cdecl*compare)(const void*,const void*)); void* base表示的是:任何形式的数组,int*, 阅读全文
posted @ 2020-06-22 20:54 雾漫大武汉 阅读(624) 评论(0) 推荐(0) 编辑
摘要: 排序算法的稳定性定义: 一个数组中几个相同的关键字经过排序以后相对位置仍然不变,那么称改排序算法的是稳定的。 举个例子,在一个数组中,紫色的10排在红色的10前面,经过排序算法之后,紫色的10位置仍然排序红色的10之前,那么这个算法就是稳定的。 下面是几种排序算法的总结: 1.冒泡排序: 稳定 2. 阅读全文
posted @ 2020-06-22 20:31 雾漫大武汉 阅读(3139) 评论(0) 推荐(0) 编辑
摘要: 归并排序采用了分治法的原理,将原先完整的数组拆分成一个一个的单独数组,然后再通过将这些单独的数组一一进行大小比较,汇聚成一个个较大的数组,最后再汇聚成一个完整的数组 这个地方需要说明的是:merge就是汇聚的过程,而mergeSort就是分治法的体现 代码可以进一步的优化,抽时间再解决吧 具体思想可 阅读全文
posted @ 2020-06-21 23:25 雾漫大武汉 阅读(319) 评论(0) 推荐(0) 编辑
摘要: 灵感来源于YouTube一段根据堆排序(HeapSort)改编的舞蹈而来 点击查看:YouTube高清无logo版Heapsort舞蹈 B站搬运版Heapsort舞蹈 #include <stdio.h> void swap(int tree[],int i,int j)//交换两值 { tree[ 阅读全文
posted @ 2020-06-20 23:52 雾漫大武汉 阅读(198) 评论(0) 推荐(0) 编辑
摘要: 如题,快速排序其实很简单,可以理解为进阶版的“数组选定界限分大小” 我把整个快排分为了两个函数,这样也更直观的了解算法流程,后期有时间再来讲解 学习快速排序可以看两个视频: 天勤 第二章:线性表划分 8分钟讲解快速排序 int partition(int a[],int left,int right 阅读全文
posted @ 2020-06-17 17:57 雾漫大武汉 阅读(1067) 评论(0) 推荐(0) 编辑
摘要: 在程序中出加入计数器来计算两者在执行过程中需要的插入次数 通过比较时间复杂度来比较效率 int shell(int a[],int n,int gap) { int count=0; int key=a[n]; while(n>=gap&&a[n-gap]>key) { a[n]=a[n-gap]; 阅读全文
posted @ 2020-06-15 23:20 雾漫大武汉 阅读(351) 评论(0) 推荐(0) 编辑
摘要: 希尔排序和插入排序很类似; 你可以看一下我上一个博客写的插入排序,这两个很类似,我的这个希尔排序也是根据插入排序改编而成 如果你看过希尔排序的概念以后仍然不是很懂是如何实现的,很建议你看一下哔哩哔哩里一个关于希尔排序改编的舞蹈 你反复看几遍绝对会在脑海里形成很强烈的印象,因为实在是太魔性了 苏格兰改 阅读全文
posted @ 2020-06-13 21:50 雾漫大武汉 阅读(203) 评论(0) 推荐(0) 编辑
摘要: 冒泡排序 //冒泡排序 /* 每两个数之间做比较:较大的数放到右边,循环下去;就能够把最大的数字换到数组最后面 然后数组长度-- 再两个数之间作比较。。。。。 */ void bubble(int a[],int n) { for(int i=0;i<n-1;i++)//注意a[n-1]为数组的最后 阅读全文
posted @ 2020-06-09 15:57 雾漫大武汉 阅读(227) 评论(0) 推荐(0) 编辑