//非数值计算常用的经典算法
/* 穷举
也称“枚举法”,极可能出现每一种情况——测试,判断是否满足条件
,一般采用循环来实现。
例子1:用穷举法输出所有的水仙花数(三位整数:其每数位上的数字的立方和与该数相等
,比如“1**3+5**3+3**3=153)*/
/* #include<stdio.h>
#include<math.h>
int main()
{
//方一
int x,g,s,b;
for(x=100;x<=199;x++);
{
printf("%d\n",x);
g=x%10;
s=(x/10)%10;
b=x/100;
printf("%d %d %d\n",g,s,b);
if(pow(s,3)+pow(g,3)+pow(b,3)==x)
{
printf("%d\n",x);
}
}
//方二
for(b=1;b<=9;b++)
{
for(s=0;s<=9;s++)
{
for(g=0;g<=9;g++)
{
x=b*100+s*10+g;
if(b*b*b+s*s*s+g*g*g==x)
{
printf("%d\n",x);
}
}
}
}
return 0;
}
*/
//冒泡排序
/*1、从存放序列的数组中的第一个元素开始到最后一个元素,
依次对相邻两数进行比较,若前者大后者小,则交换两个数的位置
2每趟比前一趟少比较一次
*/
//任意读入10个整数,将其用冒泡法案升序排列后输出
/* #include<stdio.h>
#define n 10 //定义宏 n=10
main(int argc ,char const *argv[])
{
int a[n],i,j,t;
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
for(j=0;j<=n-1;j++)
{
for(i=0;i<n-j-1;i++)
{
if(a[i]>a[i+1])
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
}
}
for(i=0;i<n;i++)
{
printf("%d ",a[i]);
}
return 0;
}
*/
//选择排序
/*选择排序是相对好理解的排序算法。假设要对含有n个
序列进行升排序,算法步骤是:
从数组存放n个数中找出最小数下标,然后将最小数与第一个数交换位置
在从n-1个数找出最小数,将此数与第二个数交换位置
重复n-1 ,即可完成其所求
*/
#include<stdio.h>
#define n 10
main()
{
int a[n],i,j,k,t;
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i<n;i++)
{
k=i;
for(j=i+1;j<n;j++)
{
if(a[j]<a[k])
{
k=j;
}
if(k!=i)
{
t=a[i];
a[i]=a[k];
a[k]=t;
}
}
}
for(i=0;i<n;i++)
{
printf("%d ",a[i]);
}
return 0;
}
原文地址:https://www.cnblogs.com/lijianmin6/p/10393239.html