《数据结构与算法》
数据结构与算法
欧阳磊
技术改变世界,学无止境,不忘初心!
展开
-
快速排序法(十三)
快速排序法和冒泡排序法有点类似,都是通过交换数据来进行排序,但是快速排序法对冒泡排序法进行了改进,所以效率也就更高。快速排序法流程:1、首先对待排序的数据进行分割划界,分界值随便取,关键是要把数据分成两部分;2、然后将左、右两边的数据同时跟分界值进行比较,把大于分界值的数据放在右边,小于的数据放在左边,如果比较的过程中,有不符合排序标准的数据就行交换,一共就三种情况(a:只有左边不符合原创 2017-08-18 15:27:11 · 294 阅读 · 0 评论 -
插入排序算法(十一)
插入排序法是通过对未排序的数据逐个插入合适的位置来进行排序的。插入排序法是先比较前两个数字,排好序后,再将后面的数字跟前面排好序的数字依次比较,找到合适位置,插进去。假设有N个数,按从小到大排列:1 4 3 5 2第一步:先比较前两个数1和4,不用交换;1 4 3 5 2第二步:将3和前面两个已经排好序的数比较,先和4比较,交换位置,然后和1比较,不交换;1 3 4 5原创 2017-08-17 17:01:02 · 616 阅读 · 0 评论 -
Shell排序法(十二)
冒泡排序、选择排序和插入排序都是一些效率比较低的排序算法,对于有大量数据的排序,Shell排序算法算是一种有效率的算法。Shell排序法中最后一步是插入排序,又称为希尔排序或者缩小增量排序。算法流程:1、将有n个元素的数组分成n/2个序列,第一个数字与第n/2+1个数字配对,作为一个序列对,后面的数字也一样进行配对,形成序列对;2、循环一次将所有的序列对进行比较,该交换的进行交换,原创 2017-08-17 18:25:58 · 3984 阅读 · 0 评论 -
选择排序算法(十)
选择排序算法是通过每一步选取最小值或最大值来达到排序的目的。假设有N个数字:2 5 3 6 4 如果按选择排序来的话,可以先从前面开始,也可以从后面开始。这里从前面开始比较。第一步:用2跟其它数字比较,如果有比它小,就把它放在第一位,但是这里没有,所以2还是在第一位;第二步:把2排除,因为它已经排好了,是最小的,所以从5开始依次往后比较,3比5小,所以后面用3去比较,3是最小的原创 2017-08-13 21:05:30 · 306 阅读 · 0 评论 -
冒泡排序算法(九)
冒泡排序是通过交换相邻数据来达到排序目的。排序有按从小到大排序,也有按从大到小来排序。假设有一组数据,个数为N:10 6 8 5 12现在要用用冒泡排序从小到大排序,怎么排?第一步:我先从后面开始比较,5和12比较不交换,8和5比较交换,5被换到了第三位,然后6和5比较交换,5被换到了第二位,最后10和5比较交换,5被换到了第一位,一共比较了N-1次,交换后的顺序为:原创 2017-08-13 17:43:27 · 341 阅读 · 0 评论 -
判断闰年(七)
闰年的一个基本规则是:四年一闰,百年不闰,四百年再闰。通俗一点就是:能够被4整除,但同时不能被100整除却能被400整除的年份就叫闰年。这里面最关键的一句代码就是:if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)【代码示例】#include #include using namespace std;i原创 2017-08-08 14:38:50 · 584 阅读 · 0 评论 -
分治算法寻找假银币问题(六)
【算法思想】【示例】【算法分析】【源代码】//只能有一个假银币#include #include #define MAXNUM 30int FalseCoin(int coin[],int low,int high){ int i, sum1, sum2, sum3; int re; sum1 = sum2 = sum3 = 0;原创 2017-06-15 11:47:03 · 1194 阅读 · 0 评论 -
递归算法计算阶乘(五)
【递归】:就是自己调用自己【算法描述】【源代码】#include #include long fact(int n);int main(){ int i; printf("请输入一个要求阶乘的整数:"); scanf("%d",&i); printf("%d的阶乘结果为:%ld\n",i,fact(i)); system("pause"); return原创 2017-06-15 11:37:49 · 1085 阅读 · 0 评论 -
递推算法求解兔子产仔问题(四)
【题目】【算法描述】【源代码】#include #include int Fibonacci(int n)//兔子产仔算法{ int t1, t2; if (n==1||n==2) { return 1; } else { t1 = Fibonacci(n-1);//递归调用 t2 = Fibonacci(n-2); return t原创 2017-06-15 11:25:50 · 613 阅读 · 0 评论 -
穷举算法求解鸡兔同笼问题(三)
【题目】【源代码】#include #include int qiongju(int head,int foot,int *chicken,int *rabbit){ int re, i, j; re = 0; for (i=0;i<=head;i++) { j = head - i; if (i*2+j*4==foot) { re = 1;原创 2017-06-15 11:14:02 · 3090 阅读 · 0 评论 -
图结构解决农夫过河问题(二附源代码)
【什么是图结构】:图结构就是所有数据元素都可以连接,跟树结构有很大区别。 图结构包括两大部分: 1、顶点:所有的数据元素,每个元素就是一个顶点(数字1、2、3、4、5、6)。 2、边:连接两个元素之间的线就是边。 图分为无向图和有向图:【无向图】:没有方向的图结构 【有向图】:带有箭头方向的图结构 无向图和有向图最大的区别在于边: 1、无向图的<1,2>和<2,1>代表同一条边。原创 2017-06-15 10:56:53 · 7931 阅读 · 3 评论