算法练习
Candy链上笔记
关于新基建、关于产品、关于行业,我有我的观点
展开
-
Error parsing XML: not well-formed (invalid token)
写Android的XML时在标签的前面会遇到这种错误:Error parsing XML: not well-formed (invalid token) 解决方法:将鼠标移至出错的那一行的最前面,单击右键,选择:源代码(Source)——>格式(Format)即能解决问题 ...原创 2015-04-14 13:44:54 · 803 阅读 · 0 评论 -
算法分析之合并排序——merge sort子函数实现
**合并排序**,顾名思义,合并另个子序列。此处一般合并两个已排序的子序列。merge(A,p,q,r)。A是待排序数组,p、q、r是下标,且满足P<=q<r。其中A[p...q]和A[q+1...r]是已经排好序的子序列。将他们合并成一个新的数组的过程叫合并排序。如待排序数组如下:![待排序数组](http://img.blog.csdn.net/20160405220918848)上面的数原创 2016-04-05 22:07:27 · 4973 阅读 · 0 评论 -
算法分析之归并排序——算法整体实现过程
昨天写了,归并排序子函数的实现。今天,我们来分析一下,归并排序算法整体的实现过程。数组A为待排序数组,A的数组元素如下:5、2、4、7、1、3、2、6,数组下标从0开始。 1.我们调用归并排序算法:merge_sort(A,0,length-1);归并排序算法的具体实现过程如下: p为数组元素的起始下标,r为终止下标,因此在数组A中p=0,r=7/******************合并排序原创 2016-04-07 11:42:03 · 943 阅读 · 0 评论 -
算法分析之——quick-sort快速排序
快速排序是一种排序算法,最坏情况运行时间为θ(n²),但其最佳期望运行时间为θ(nlgn),并且θ(nlgn)记号中隐含的常数因子很小,快排是在就地排序的一种排序算法。快排是基于分治思想的,与归并排序一样。快速排序是一种不稳定的排序算法,因为算法实现过程中涉及到元素交换。思路:(1)分解:数组A[n]被划分两个字数组A[0..q-1]和A[q+1..n],使得对于数组A[0..q-1]中的元素都原创 2016-04-09 14:10:32 · 1723 阅读 · 0 评论 -
算法分析之——heap-sort堆排序
堆排序是一种原地排序排序算法,不使用额外的数组空间,运行时间为O(nlgn)。本篇文章我们来介绍一下堆排序的实现过程。 要了解堆排序,我们首先来了解一个概念,完全二叉树。堆是一种完全二叉树或者近似完全二叉树。什么是完全二叉树呢?百度百科上给出定义:完全二叉树:除最后一层外,每一层上的节点数均达到最大值;在最后一层上只缺少右边的若干结点。下面用两个小图来说明完全二叉树与非完全二叉树。(图片来自百度原创 2016-04-10 09:54:38 · 2456 阅读 · 2 评论 -
算法分析之——计数排序
计数排序不同于比较排序,是基于计数的方式,对于计数排序,假设每一个输入都是介于0~k之间的整数。对于每一个输入元素x,确定出小于x的元素的个数。假如有17个元素小于x,则x就属于第18个输出位置。 计数排序涉及到三个数组A[0…..length-1],length为数组A的长度;数组B与数组A长度相等,存放最终排序的结果;C[0…..K]存放A中每个元素的个数,k为数组A中的最大值。int cou原创 2016-04-10 14:30:22 · 2257 阅读 · 1 评论 -
番茄助手Visual Assist X中文注释拼写提示
番茄助手Visual Assist X是vc++6.0的一个插件,最近在用的时候,中文注释总会提示拼写错误,像这样: 查了一下解决方法:将Visual Assist X Options —> Advanced —> Underlines中的Underline spelling errors in comments and strings 左边的勾去掉即可。 Visual Assist X O原创 2016-04-13 16:37:36 · 3285 阅读 · 0 评论 -
Shannon-Fano-Elias编码的C语言实现
Shannon-Fano-Elias编码一.理论分析Shannon-Fano-Elias编码是利用累积分布函数来分配码字。不失一般性,假定取X={1,2,…m}。假设对于所有的x,有p(x)>0。定义累积分布函数F(X)为 其函数图形见下图所示,修正的累积分布函数为其中表示小于x的所有字符的概率和加上字符x概率的一般得到的值。由于随机变量是离散的,故累积分布函数所含的阶梯高度为p(x)。函数的值原创 2016-04-15 10:38:22 · 4577 阅读 · 0 评论 -
算法分析之——基数排序
基数排序基数排序(radix-sort),首先是按照最低有效位数字进行排序,然后再按次低有效位,知道对所有的数字都进行排序。对于d位数来说,仅需d遍就可以将一个数组排好序。下图给出形象的排序过程:红色表示当前正被排序的数位。对于基数排序,重要的一点就是按位排序要稳定。因此,在这一步,我们可以选择稳定的排序算法。如:计数排序、插入排序、归并排序都可以。接下来给出基数排序的算法实现过程:void rad原创 2016-04-15 20:32:55 · 925 阅读 · 0 评论 -
DAMAGE:after Normal block问题
最近写程序经常遇到这个问题,这些程序都有一个共同点就是用到了free和malloc函数。今天晚上复习约瑟夫环的时候又出现了这个问题: 最后发现是在free的地方有问题,就是你要释放的内存,比你申请的内存要大,因此发生内存溢出。所以,基本上都是修改malloc处的内存申请的大小,基本上就可以解决了。原创 2016-04-22 21:00:34 · 533 阅读 · 0 评论 -
C语言单链表实现约瑟夫环
1.约瑟夫环问题编号为1,2…n的人按顺时针方向围坐一圈,每个人持有一个密码(正整数)。开始任选一个整数作为报数上限m,从第一个人顺时针自1开始顺时针报数,报到m时停止报数。报到m的人出列,将他的密码作为新的m值,从他顺时针方向上的下一个人开始重新从1报下去,如此下去,直到所有的人全部出列为止。例如,m的初值为20;n=7,7个人的密码依次是3,1,7,2,4,8,4。求出列的顺序。2.问题分析1.原创 2016-04-22 21:39:07 · 4941 阅读 · 0 评论 -
关于C++子类在继承父类的构造函数时的一些情况
1.子类没有定义构造方法,则调用父类的无参构造方法#include<iostream>#include<string>//如果子类没有定义构造方法,则调用父类的无参构造方法class BaseClass{public: BaseClass(); BaseClass(std::string theName); void dosomething();private:原创 2015-11-12 22:29:20 · 1889 阅读 · 0 评论 -
C++中子类继承父类构造器和析构器的执行顺序
当子类继承父类时,实例化子类对象,构造函数的执行顺序是从父类的构造函数到子类的构造函数依次往下,接下来继续执行main函数,在main函数的最后一句执行完毕时,开始执行析构函数,顺序是从子类到父类依次往下。#include<iostream>#include<string>//构造器与析构器class BaseClass{public: BaseClass(); ~Base原创 2015-11-12 23:36:18 · 1542 阅读 · 0 评论 -
算法分析之插入排序——动态数组实现
插入排序,最简单的排序算法。本次采用动态数组实现。1.申请动态数组空间 printf("输入数组的大小length:\n"); int length=0; scanf("%d",&length); /****动态分配内存初始化数组***********************/ int * array = (int*)malloc(length * sizeof原创 2016-04-04 21:51:41 · 760 阅读 · 0 评论