动态规划实现矩阵链乘法
#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]);
}
}
基数排序——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);
}
}
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;
计数排序——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);
}
堆排序——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);
}
}
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);
}
}
快速排序——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);
}
}
/****************************************************/
归并排序整体实现——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);
}
}
合并排序算法——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;
}
插入排序算法(动态数组实现)
插入排序算法(动态数组实现)
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);//释放动态数组空间
十进制转换到二进制、八进制、十六进制
C语言实现十进制转换到二进制、八进制、十六进制
CRC-12校验JAVA代码
CRC 12校验JAVA版
public class CRCtext {
public static void main String[] args {
CRC
}
}