算法1~2019.2.17

Posted lijianmin6

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法1~2019.2.17相关的知识,希望对你有一定的参考价值。

//非数值计算常用的经典算法
/* 穷举
也称“枚举法”,极可能出现每一种情况——测试,判断是否满足条件
,一般采用循环来实现。
例子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 ",x);
            g=x%10;
            s=(x/10)%10;
            b=x/100;
            printf("%d %d %d ",g,s,b);
        
            if(pow(s,3)+pow(g,3)+pow(b,3)==x)
            {
                printf("%d ",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 ",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;
}
 
























































































































以上是关于算法1~2019.2.17的主要内容,如果未能解决你的问题,请参考以下文章

算法 -- 数据结构和算法的关系算法定义和特性算法设计的要求算法效率的度量方法函数的渐近增长算法时间复杂度 算法空间复杂度

常用排序算法总结

C++ 26 常用算法

2垃圾回收算法(标记清除算法复制算法标记整理算法和分代收集算法),各种垃圾收集器讲解(学习笔记)

数据挖掘-K-近邻算法

排序 | 秒懂排序算法(Java)