数据结构和算法
数据结构和算法基本都是不分离的,本专栏覆盖链表,二叉树,图论,数论,排序算法,搜索剪枝算法,启发式搜索,A*算法,动态规划,分治策略,排序算法,字符串查找算法,背包问题,后缀数组,最大流和最小割,博弈论,最短路径算法,最小生成树,红黑树,STL等。
aaronymhe
fighting
展开
-
扩展欧几里得算法
问题描述:求解二元一次方程ax+by=c。问题分析:上述的二元一次方程可以用同余方程来进行描述:ax≡cmod(b)两个问题可以进行转换,但是都可以用扩展的欧几里得算计来解决。首先关于欧几里得算法(也叫做辗转相除法),可以查看我的另外一篇文章: http://blog.csdn.net/yi_ming_he/article/details/72084826下面就来说说如何用扩展欧几里得算法求解二元原创 2017-05-31 13:52:44 · 13250 阅读 · 0 评论 -
中国剩余定理
问题描述:有如下同余方程组:x≡a[1](mod m[1]) x≡a[2](mod m[2]) x≡a[3](mod m[3]) x≡a[4](mod m[4]) … x≡a[n](mod m[n])根据同余方程组求出x的值。(其中m[1],m[2],m[3],m[4]…m[n]两两互素)问题分析:中国剩余定理就是专门用来解同余方程组的,但是必须要满足前提条件所有的模都是两两互素的。首先计原创 2017-06-02 22:28:42 · 13510 阅读 · 0 评论 -
排序算法之冒泡排序
问题描述:输入一个原始数列,把它进行升序排序,从小到大输出。例如:给定数列如下: 5 15 99 45 12 1 90 19 33 41排序后的结果为: 1 5 12 15 19 33 41 45 90 99冒泡排序顾名思义,就是让小的数一个一个的冒到上面来(最上面就是我们数组下标0),那么具体的做法是,从后往前两两进行比较,让两者中较小往上升,大家看一下下面这个过程:下标值:原创 2017-05-08 22:25:08 · 12313 阅读 · 0 评论 -
排序算法之选择排序
问题描述:输入一个原始数列,把它进行升序排序,从小到大输出。例如:给定数列如下: 5 15 99 45 12 1 90 19 33 41排序后的结果为: 1 5 12 15 19 33 41 45 90 99选择排序,就是第一步从所有的数据中选出最小的数放在第一个位置,然后从剩下的数中选出最小的放在第二个位置,以此类推,就能从小到大排好所有的数,下面来看一个具体的过程:下标值序号: 0 1原创 2017-05-09 00:25:02 · 12471 阅读 · 0 评论 -
排序算法之插入排序
问题描述:输入一个原始数列,把它进行升序排序,从小到大输出。例如:给定数列如下: 5 15 99 45 12 1 90 19 33 41排序后的结果为: 1 5 12 15 19 33 41 45 90 99插入排序,就是从第二个数开始(因为第一个数肯定是排好了的),如果比前面的数大,那就什么都不用做,因为已经有序了,如果比前面的小,往前面进行查找,寻找合适的位置进行插入,每个数都进行这样的原创 2017-05-09 23:31:21 · 16754 阅读 · 0 评论 -
排序算法之希尔排序
问题描述:输入一个原始数列,把它进行升序排序,从小到大输出。例如:给定数列如下: 5 15 99 45 12 1 90 19 33 41排序后的结果为: 1 5 12 15 19 33 41 45 90 99希尔排序,首先选定步长值,选定的方法一般是从数组个数n/2开始,依次往下除以2,直到步长减少到1为止,选好步长之后,我们在每个步长值上,进行插入排序,使得该步长范围的数列都是有序的,随着原创 2017-05-10 22:39:46 · 12524 阅读 · 0 评论 -
排序算法之快速排序
问题描述:输入一个原始数列,把它进行升序排序,从小到大输出。例如:给定数列如下: 5 15 99 45 12 1 90 19 33 41排序后的结果为: 1 5 12 15 19 33 41 45 90 99快速排序的基本思想是,找出一个分界的数num,把不大于num的数全部放在它左边,把不小于num的数全部放在它右边,然后对左右区间做相同的操作,直到各个区间都只有一个数位置,下面来看一下具原创 2017-05-10 23:50:33 · 12306 阅读 · 3 评论 -
排序算法之归并排序
问题描述:输入一个原始数列,把它进行升序排序,从小到大输出。例如:给定数列如下: 5 15 99 45 12 1 90 19 33 41排序后的结果为: 1 5 12 15 19 33 41 45 90 99归并排序是分之思想的典型应用,首先对N个元素进行排序是一个大的问题,我们把它对半拆分成左右两个部分,这样对N个元素排序的问题,就拆分成对【0,(N - 1)/2】和【(N - 1)/2+原创 2017-05-12 00:02:01 · 11593 阅读 · 0 评论