随笔分类 -  算法与数据结构

摘要:排序算法分为内部排序和外部排序,我们经常说的排序算法就是内部排序 内部排序:数据记录在内存中进行排序 外部排序:排序的数据很大,一次性不能容纳全部的排序记录,在排序的过程中需要访问外存 稳定排序算法:相同的元素位置没有被改变 我们将要了解的排序算法如下: 交换排序:冒泡排序(可以是稳定,可以是不稳定 阅读全文
posted @ 2022-01-18 18:59 西*风 阅读(74) 评论(0) 推荐(0) 编辑
摘要:一.为什么要有红黑树这种数据结构? 我们知道ALV树是一种严格按照定义来实现的平衡二叉查找树,所以它查找的效率非常稳定,为O(log n),由于其严格按照左右子树高度差不大于1的规则,插入和删除操作中需要大量且复杂的操作来保持ALV树的平衡(左旋和右旋),因此ALV树适用于大量查询,少量插入和删除的 阅读全文
posted @ 2019-04-18 21:39 西*风 阅读(32802) 评论(27) 推荐(15) 编辑
摘要:用最通俗的话解释回溯思想::盆友,玩过联盟吗?:没有啊,好玩吗?:好玩啊,你试试:mmp,试过了,不好玩,还是吃鸡去,吃鸡使我快乐你的目的是快乐,发现打联盟不能使你快乐,马上找另外一条能使你快乐的路------------------------------(一条很正经的分割线)---------------------------------------------回溯思想其实也可以叫做试探思想... 阅读全文
posted @ 2018-06-24 20:12 西*风 阅读(2121) 评论(1) 推荐(4) 编辑
摘要:昨天和前天写完了分治和dp,感觉收获真的挺大的,复习绝不是简单的重复记忆,而是将所学知识融会 贯通的过程,分析各种思想的异同,这些都是在平时学习和刷题的时候没有认真考虑的问题 好了,扯远了 今天分析一下到底什么叫贪心策略 怎么理解贪心:贪心在解决问题上是目光短浅的,仅仅根据当前的已知信息就做出选择, 阅读全文
posted @ 2018-06-24 12:52 西*风 阅读(1831) 评论(0) 推荐(2) 编辑
摘要:期末了,通过写博客的方式复习一下dp,把自己理解的dp思想通过样例全部说出来 说说我所理解的dp思想 dp一般用于解决多阶段决策问题,即每个阶段都要做一个决策,全部的决策是一个决策序列,要你求一个 最好的决策序列使得这个问题有最优解 将待求解的问题分为若干个相互联系的子问题,只在第一次遇到的时候求解 阅读全文
posted @ 2018-06-23 21:06 西*风 阅读(3991) 评论(0) 推荐(4) 编辑
摘要:期末了,通过写博客的方式复习一下算法,把自己知道的全部写出来 分治:分而治之,把一个复杂的问题分解成很多规模较小的子问题,然后解决这些子问题,把解决的子问题合并起来,大问题就解决了 但是我们应该在什么时候用分治呢?这个问题也困扰了我很久,做题的时候就不知道用什么算法 能用分治法的基本特征: 1.问题 阅读全文
posted @ 2018-06-22 21:23 西*风 阅读(9395) 评论(2) 推荐(17) 编辑
摘要:快速排序的思想: 选择一个基准元素,比基准元素小的放基准元素的前面,比基准元素大的放基准元素的后面,这种动作叫分区,每次分区都把一个数列分成了两部分,每次分区都使得一个数字有序,然后将基准元素前面部分和后面部分继续分区,一直分区直到分区的区间中只有一个元素的时候,一个元素的序列肯定是有序的嘛,所以最 阅读全文
posted @ 2018-04-12 19:37 西*风 阅读(1359) 评论(0) 推荐(1) 编辑
摘要:直接上代码吧 阅读全文
posted @ 2018-04-10 20:46 西*风 阅读(7680) 评论(0) 推荐(1) 编辑
摘要:不正确的地方麻烦指正哦!!! 阅读全文
posted @ 2018-04-03 15:13 西*风 阅读(210) 评论(0) 推荐(0) 编辑
摘要:#include #define maxsize 1024 //顺序队列的类型定义如下: typedef struct { int data[maxsize]; int rear,front; }sequeue; sequeue *q;//定义一个指向队列的指针变量 int main() { q=(sequeue*)malloc(sizeof(sequeue));//申请... 阅读全文
posted @ 2018-04-03 15:07 西*风 阅读(260) 评论(0) 推荐(0) 编辑
摘要:#include #include int k; int binarysearch(int a[],int x,int low,int high)//a表示需要二分的有序数组(升序),x表示需要查找的数字,low,high表示高低位 { if(low>high) { return -1;//没有找到 } int mid=(low+high)/2; ... 阅读全文
posted @ 2018-04-03 15:02 西*风 阅读(195) 评论(0) 推荐(0) 编辑
摘要:写此博文目的: 1.方便自己日后复习,加深自己的理解 2.也希望能给被链队困惑的朋友一点启发 链队: 将单链表按照队列的方式进行操作 代码如下: 结果如下: 代码分析: 置空和进链队: 出链队: 有任何错误的地方欢迎拍砖指教哦!!! 阅读全文
posted @ 2018-04-03 10:20 西*风 阅读(1077) 评论(0) 推荐(1) 编辑
摘要:学习串的时候写的一点笔记 方便自己复习,也希望能给需要这个的人一点帮助 代码如下: 运行结果: 有任何错误的地方欢迎各位拍砖指正哦!!! 阅读全文
posted @ 2018-04-01 17:01 西*风 阅读(454) 评论(0) 推荐(0) 编辑
摘要:上次上课老师讲了全排列算法,现在刚刚看自己的写的全排列算法,看了好一会才看懂。。。。 应该是自己理解的不够彻底 所以今天彻彻底底的来分析一下 先看图: 思路: 先固定一个字符,然后将固定的字符与它后面的每一个进行交换,一直递归下去,直到固定的字符后面只有一个字符 我们先看看图,框外面的字符是被固定的 阅读全文
posted @ 2018-03-31 21:31 西*风 阅读(2272) 评论(1) 推荐(1) 编辑
摘要:整数划分问题是算法中的一个经典命题之一,有关这个问题的讲述在讲解到递归时基本都将涉及。所谓整数划分,是指把一个正整数n写成如下形式: n=m1+m2+...+mi; (其中mi为正整数,并且1 <= mi <= n),则{m1,m2,...,mi}为n的一个划分。 如果{m1,m2,...,mi}中 阅读全文
posted @ 2018-03-29 20:26 西*风 阅读(1790) 评论(0) 推荐(0) 编辑
摘要:/*归并排序思想:1.分而治之,将一个无序的数列一直一分为二,直到分到序列中只有一个数的时候,这个序列肯定是有序的,因为只有一个数,然后将两个只含有一个数字的序列合并为含有两个数字的有序序列,这样一直进行下去,最后就变成了一个大的有序数列2.递归的结束条件是分到最小的序列只有一个数字的时候时间复杂度分析:最坏情况:T(n)=O(n*lg n)平均情况:T(n)=O(n*lg n)稳定性:稳定(两... 阅读全文
posted @ 2018-03-29 19:16 西*风 阅读(349) 评论(0) 推荐(0) 编辑
摘要:写此博文目的: 1.刚学了棋盘覆盖问题,自己实现它,加深自己的理解很感悟 2.给为棋盘问题困惑的朋友带来一点思路 开始分析! 什么叫做分治法呢? :简单来说就是分而治之,先把问题分解成很多个小问题,然后再处理它 棋盘覆盖问题就是一个很经典的分治问题 首先我们先来看一下棋盘覆盖问题到底是个什么问题? 阅读全文
posted @ 2018-03-28 21:24 西*风 阅读(8274) 评论(1) 推荐(2) 编辑
摘要:写本文的目的: 1.加深自己的理解,以便自己日后复习 2.给看到此文的人一点启发 KMP算法看懂了就觉得特别简单,思路也好理解,但是看不懂之前,查各种资料看大佬的博客,都很懵逼...... 1. 算法过程解释 首先,字符串"BBCABCDAB ABCDABCDABDE"的第一个字符与搜索词"ABCD 阅读全文
posted @ 2018-03-04 12:29 西*风 阅读(547) 评论(2) 推荐(0) 编辑

点击右上角即可分享
微信分享提示