自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Candy链上笔记

关于新基建、关于产品、关于行业,我有我的观点

  • 博客(12)
  • 资源 (12)
  • 收藏
  • 关注

原创 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 4898

原创 DAMAGE:after Normal block问题

最近写程序经常遇到这个问题,这些程序都有一个共同点就是用到了free和malloc函数。今天晚上复习约瑟夫环的时候又出现了这个问题: 最后发现是在free的地方有问题,就是你要释放的内存,比你申请的内存要大,因此发生内存溢出。所以,基本上都是修改malloc处的内存申请的大小,基本上就可以解决了。

2016-04-22 21:00:34 506

原创 算法分析之——基数排序

基数排序基数排序(radix-sort),首先是按照最低有效位数字进行排序,然后再按次低有效位,知道对所有的数字都进行排序。对于d位数来说,仅需d遍就可以将一个数组排好序。下图给出形象的排序过程:红色表示当前正被排序的数位。对于基数排序,重要的一点就是按位排序要稳定。因此,在这一步,我们可以选择稳定的排序算法。如:计数排序、插入排序、归并排序都可以。接下来给出基数排序的算法实现过程:void rad

2016-04-15 20:32:55 901

原创 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 4497

原创 C和指针——读书笔记(一)

本科的时候学过C语言,知识基础真是薄弱。最近被指针折磨的痛不欲生,在实验室翻出一本《C和指针》,翻出来读,第一章就觉得受益匪浅,于是决定写一些读书笔记,记下自己疑惑的地方。C语言中基本的输入输出函数有:putchar ():把变量中的一个字符常量输出到显示器屏幕上; getchar ();从键盘上输入一个字符常量,此常量就是该函数的值; printf ();把键盘中的各类数据,加以格式控制输出

2016-04-14 17:31:09 831

原创 番茄助手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 3252

原创 算法分析之——计数排序

计数排序不同于比较排序,是基于计数的方式,对于计数排序,假设每一个输入都是介于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 2239 1

原创 算法分析之——heap-sort堆排序

堆排序是一种原地排序排序算法,不使用额外的数组空间,运行时间为O(nlgn)。本篇文章我们来介绍一下堆排序的实现过程。 要了解堆排序,我们首先来了解一个概念,完全二叉树。堆是一种完全二叉树或者近似完全二叉树。什么是完全二叉树呢?百度百科上给出定义:完全二叉树:除最后一层外,每一层上的节点数均达到最大值;在最后一层上只缺少右边的若干结点。下面用两个小图来说明完全二叉树与非完全二叉树。(图片来自百度

2016-04-10 09:54:38 2438 2

原创 算法分析之——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 1698

原创 算法分析之归并排序——算法整体实现过程

昨天写了,归并排序子函数的实现。今天,我们来分析一下,归并排序算法整体的实现过程。数组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 919

原创 算法分析之合并排序——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 4935

原创 算法分析之插入排序——动态数组实现

插入排序,最简单的排序算法。本次采用动态数组实现。1.申请动态数组空间 printf("输入数组的大小length:\n"); int length=0; scanf("%d",&length); /****动态分配内存初始化数组***********************/ int * array = (int*)malloc(length * sizeof

2016-04-04 21:51:41 740

动态规划实现矩阵链乘法

#include #include #include #define MAX 100 /*动态规划矩阵链乘*/ typedef struct { int m[MAX][MAX]; int s[MAX][MAX]; }res; void InitP(int* p,int length) { int i; printf("\n初始化序列p,请输入p的维数\n"); for (i=0;i<length;i++) { printf("p[%d]=",i); scanf("%d",&p[i]); } }

2016-05-07

基数排序——radix-sort

void radix_sort(int A[],int B[],int length,int d) { int i; for (i=1;i<=d;i++) { get_k(A,B,i,length,d); insert_sort(B,A,length); printf("\n\n第%d位排序完成的结果:\n\n",i); print_A(A,length); } }

2016-04-15

shannon-fanon-elias编码C语言实现

#define NUM 2 #define ZERO 0.000001 #define A 1000 int length; typedef struct { double px; //px概率值 double Fx; //fx函数值 double Fbax; //Fba(X)的值 int lx; //编码的长度 int code[A]; //存储二进制比特 }SFE;

2016-04-15

计数排序——count_sort

void count_sort(int A[],int B[],int k) { int *C = (int *)malloc((k+1) * sizeof(int)); int i,j; for(i=0;i<=k;i++)//初始化数组C C[i]=0; for(j=0;j<=length-1;j++)//计算A中元素的个数 C[A[j]] = C[A[j]]+1; for(i=1;i<=k;i++)//计算小于等于C[i]的元素的个数 C[i] = C[i] + C[i-1]; for(j=length-1;j>=0;j--) { int k=C[A[j]]-1; B[k] = A[j]; C[A[j]] = C[A[j]] - 1; } free(C); }

2016-04-10

堆排序——heap-sort

void heap_sort(int A[],int length) { BUILD_MAX_HEAP(A,length); int i,middle; for(i=length-1;i>0;i--) { middle=A[0]; A[0]=A[i]; A[i]=middle; heap_size--; MAX_HEAPIFY(A,0); } }

2016-04-09

merge-sort

void merge_sort(int A[],int p,int r) { int q; if(p<r) { q=(p+r)/2;//计算q的值,即将问题拆分成两个子问题; merge_sort(A,p,q); //左半边递归调用merge_sort,缩小问题规模 printf("\n"); //print_A(A,p,q); merge_sort(A,q+1,r);//右半边递归调用merge_sort,缩小问题规模 printf("\n"); //print_A(A,q+1,r-1); merge(A,p,q,r); } }

2016-04-09

快速排序——quicksort

/********************快排算法************************/ void quicksort(int A[],int p,int r) { int q; if(p<r) { q=partition(A,p,r); quicksort(A,p,q-1); quicksort(A,q+1,r); } } /****************************************************/

2016-04-08

归并排序整体实现——merge-sort

void merge_sort(int A[],int p,int r) { int q; if(p<r) { q=(p+r)/2;//计算q的值,即将问题拆分成两个子问题; merge_sort(A,p,q); //左半边递归调用merge_sort,缩小问题规模 printf("\n"); //print_A(A,p,q); merge_sort(A,q+1,r);//右半边递归调用merge_sort,缩小问题规模 printf("\n"); //print_A(A,q+1,r-1); merge(A,p,q,r); } }

2016-04-06

合并排序算法——merge sort

#include <stdio.h> #include <malloc.h> #include <limits.h> void init(int A[],int p,int r);//初始化数组 void print_A(int A[],int p,int r);//打印数组元素 void merge(int A[],int p,int q,int r);//合并排序算法 /************合并排序算法的实现******************/ int main() { int p,q,r; printf("合并排序算法的实现:\n"); printf("请输入p、q、r的值(输入格式1,12,13):"); scanf("%d,%d,%d",&p,&q,&r); printf("p=%d,q=%d,r=%d\n",p,q,r); int * A = (int*)malloc((r+1)*sizeof(int)); init(A,p,r); printf("待合并数组:\n"); print_A(A,p,r); printf("\n\n"); printf("合并排序算法的实现过程:\n"); merge(A,p,q,r); free(A);//释放动态数组空间 return 0; }

2016-04-05

插入排序算法(动态数组实现)

插入排序算法(动态数组实现) printf("--------插入排序算法的实现--------\n"); printf("输入数组的大小length:\n"); int length=0; scanf("%d",&length); /****动态分配内存初始化数组***********************/ int * array = (int*)malloc(length * sizeof(int)); init(array,length); print_array(array,length); insert_sort(array,length); free(array);//释放动态数组空间

2016-04-04

十进制转换到二进制、八进制、十六进制

C语言实现十进制转换到二进制、八进制、十六进制

2014-10-23

CRC-12校验JAVA代码

CRC 12校验JAVA版 public class CRCtext { public static void main String[] args {     CRC } }

2013-12-27

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除