交换算法
查找最小值算法
冒泡排序
选择排序
插入排序
shell排序 (希尔排序)
归并排序
快速排序
二分查找算法
查找重复算法
C语言经典的无损压缩算法有:哈夫曼算法、LZ。哈夫曼算法:
哈夫曼编码是David A. Huffman于1952年发明的一种满足对编码算法要求的一种编码算法。
哈夫曼算法是利用频率信息构造一棵二叉树,频率高的离根节点近(编码长度短),频率低的离根节点远(编码长度长),手动构造方法是先将字母按照频率从小到大排序,然后不断选择当前还没有父节点的节点中权值最小的两个,构造新的父节点,父节点的值为这两个节点值的和,直到构造成一棵二叉树。
LZ算法:
LZ算法及其衍生变形算法是压缩算法的一个系列。LZ77和LZ78算法分别在1977年和1978年被创造出来。虽然他们名字差不多,但是算法方法完全不同。这一系列算法主要适用于字母数量有限的信息,比如文字、源码等。流行的GIF和PNG格式的图像,使用颜色数量有限的颜色空间,其压缩就采用了两种算法的灵活变形应用。
一个数的各位数之和#include "stdio.h"
main()
{
int n,sum=0,j
printf("please input n:\n")
scanf("%d",&n)
while(n)
{
j=n%10
n=n/10
sum+=j
}
printf("%d\n",sum)
}
冒泡法排序
#include "stdio.h"
#define MAX 10
int score[MAX]
void bubble()
{
int i,j,tmp
for(i=0i<=MAX-2i++)
{
for(j=0j<MAX-i-1j++)
if(score[j]>score[j+1])
{
tmp=score[j]//前后交换//
score[j]=score[j+1]
score[j+1]=tmp
}
}
}
void main()
{
int i
printf("please input 10 students score1!\n")
for(i=0i<MAXi++)
scanf("%d",&score[i])
bubble()
for(i=0i<MAXi++)
{
printf(" %d",score[i])
if((i+1)%5==0)
printf("\n")
}
}
阶乘
#include "stdafx.h"
#include "stdio.h"
int main()
{
long n,sum=1,i
scanf("%d",&n)
if(n==0||n==1)
sum=1
else
for(i=1i<=ni++)
{
sum*=i
}
printf("%ld\n",sum)
return 0
}
杨辉三角
#include "stdio.h"
int main()
{
int i,j,n,k,a[21][21]//数组的大小,为了节约内存空间,最好不要太大。后面的“n”不要超过这个数,这里最好用宏定义//
for(i=0i<20i++)
{
a[i][0]=1
a[i][i]=1
}
printf("please input n:\n")
scanf("%d",&n)//n不要超过上面的数组大小//
for(i=1i<=n+1i++)
{
for(k=1k<=2*(n-i+1)k++)
printf(" ")
for(j=1j<ij++)
{
a[i][j]=a[i-1][j-1]+a[i-1][j]
printf("%4d",a[i-2][j-1])
}
printf("\n")
}
return 0
}
100--999水仙花数
#include "stdio.h"
int main()
{
int num,a,b,c
for(num=100num<=999num++)
{
a=num/100
b=num/10%10
c=num%10
if(a*a*a+b*b*b+c*c*c==num)
printf("%4d\n",num)
}
return 0
}
判断素数
#include "stdio.h"
#include "math.h"
int main()
{
int n,i
printf("please input N:\n")
scanf("%d",&n)
for(i=2i<=sqrt(n+1)i++)
{
if(n%i==0)
break
}
if(i>sqrt(n+1))
printf("%d是素数!\n",n)
else
printf("n不是素数!\n")
return 0
}