
c语言
yyyyyyyuande
这个作者很懒,什么都没留下…
展开
-
warning: useless storage class specifier in empty declaration 问题解决
编译如下报错typedef struct SqQueue{ QElemType *base; int front; int rear;};网上查了下,typedef是定义别名的,这里没有名字需要改成如下:typedef struct { QElemType *base; int front; int rear;}SqQueue;...原创 2019-07-15 17:39:39 · 15897 阅读 · 0 评论 -
动态规划 dp01 西瓜分堆问题 c代码
先看下题目:已知14个西瓜 的重量,分别为:23 21 12 19 18 25 20 22 16 19 12 15 17 14请将这些瓜分成两堆,每堆的个数不限,使两堆西瓜重量之差最小。我们知道,动态规划类问题是存在明确的步骤的:1. 分阶段。2. 状态迁移方程。3. 求最优解。这道题要把西瓜分成两堆,假设A堆和B堆,对于每个西瓜而言,要么分到A,要么分到B,和01背...原创 2019-10-30 17:35:59 · 2387 阅读 · 0 评论 -
动态规划 dp00 01背包问题及其扩展 c代码
这几天在学习算法方面动态规划的内容,主要是为了面试。最早接触动态规划是在大学的算法课,当时看书遇到的第一道难题就是01背包问题,自己琢磨了半天也没想出一个好的方法,看课本几行代码就搞定了,感觉特别不可思议,当时觉得算法相当强大,不过也没太花时间在这上边,最近准备大厂面试的时候,发现算法和数据结构的要求相当高,所以开始复习下算法。私以为,卓越的程序员是需要懂得算法的。在阅读内核源码的时候,经常会碰到...原创 2019-10-30 17:22:44 · 1034 阅读 · 0 评论 -
归并排序 c代码
唯有的两次面试考察了排序,每次都想写个时间复杂度在O(nlogn)。第一次面试一看到排序想都没想直接开撕快速排序,写到一半快速排序的逻辑忘了,尴尬之余速度整了个冒泡排序替代。第二次面试也有一道排序题,当时想都没想直接开撕归并排序,结果在处理辅助数组的时候把自己给绕晕了,越写越慢,临时整了个冒泡排序替代。( ̄_, ̄ )"。冒泡排序还真是好用,呵呵。平常工作的时候遇到排序问题基本上整个冒泡排序就过去了...原创 2019-10-30 17:21:35 · 310 阅读 · 0 评论 -
快速排序 递归版本和非递归方法 c代码
快速排序平均时间是T(n) =knln(n),其中n为待排序序列中记录个数,k为某个常数。通常,快速排序被认为是,在所有同数量级(O(nlogn))的排序方法中,其平均性能最好,但是,若初始记录按关键字有序或者基本有序,快速排序将蜕变为冒泡排序,其时间复杂度为O(n^2)。快速排序听起来挺简单,实现代码看起来也很简单。但简单只是相对而言,如果不理解其思路的话,现场写代码还是有一定难度,因此需要...原创 2019-10-30 17:20:18 · 1080 阅读 · 0 评论 -
冒泡排序 c代码
冒泡排序是不是排序算法的鼻祖呢?应该是。即便是没学过算法的小学生,你让他正序排列一串数字,估计他的思路就是冒泡排序。冒泡排序的时间复杂度为O(n^2),和普通的插入排序一样,要说区别吧,可能是冒泡排序是将数字从后往前插入,插入排序是从前往后插。普通场景下需要排序搞个冒泡就解决了,除非数量级特别大,不然杀鸡焉用牛刀。冒泡排序思想就是数据集中两两比较,找到最大的放到最后,然后重新来一遍,找到次最大...原创 2019-10-30 17:36:07 · 353 阅读 · 0 评论 -
希尔排序(ShellSort) c源码
希尔排序(Shell‘s Sort)其实是一种优化的插入排序,插入排序(insertSort)平均时间复杂度为O(n^2),仅仅比较时间复杂度的话,优于插入排序的还有很多其它排序方法,比如说堆排序或者归并排序。很奇怪为啥现在算法里还介绍插入排序,考虑到它时间复杂度这么大,但书上也说了,如果数据量小的话,插入排序效率还是蛮高的。我觉得最重要一点是插入排序简单,几乎不需要思考就可以写出来。插入排...原创 2019-10-30 17:20:04 · 300 阅读 · 0 评论 -
面试题 合并两个有序链表
这道题常规解法有两种,可能还有其它。解法1,设置指针 i, j 分别指向两个链表,比较 i, j 大小,小的先挂到新链表上,然后移动指针继续比较,直到某个链表走到最后,这时候把另一个链表剩余的全挂过去。解法2, 使用递归方法,这个我一开始也没想到,方法也很简单,把合并两个链表为一个的过程看成是在两个链表中每次找出一个最小值的过程。然后把这个最小值挂到prevNode->next指...原创 2019-10-30 17:19:15 · 522 阅读 · 0 评论 -
简单选择排序 c代码
简单选择排序思路是从i开始遍历,选择最小值插入到arr[ i ], 下一次从i + 1处遍历,直到遍历完成。思路和冒泡排序刚好相反,冒泡排序是每次遍历时选取最大值,简单选择遍历每次选取最小值,冒泡排序过程的确像水中冒泡的样子,但要是这样,简单选择排序不是应该叫做沉底排序吗?每次遍历,最小值沉了下去。代码比较简单,遍历选取最小值。下面是c语言实现://两数交换void swap(int ...原创 2019-10-30 17:21:57 · 796 阅读 · 0 评论