月度归档:2015年09月

c语言常用的查找算法-顺序查找

顺序查找:
依次遍历查找数据

#include "stdio.h"
typedef struct student{
     int id;    //编号
     char name[10]; //姓名
     float score;   //分数
}std;

int search(std s[],int n,int key){
     int i;
     for(i=0;i < n;i++)
         if(s[i].id == key)
            return i;
    return -1;
}

int main(){
       std s[]={
         {1,"张三",98},
         {2,"吴曦月",92},
         {3,"小明",89},
         {4,"关悦",96}
        };

       int t=-1;
       int y=0;
       printf("请输入需要获取的学生编号\n");
       scanf("%d",&y);
       t = search(s,4,y);
       if(t == -1)
         printf("无此学生编号!\n");
       else 
         printf("此学生成绩:\n%d\t%s\t%f\n",s[y].id,s[y].name,s[y].score);

}

c语言--算法 递归 分治


一、递归与分治的概念

分治:将一个问题分解为若干个小问题,我们称这个方法为分治。
递归:直接或间接的调用算法本身,我们称这种方式为递归。


二、递归示例

#include "stdio.h"
int fun(int n){
    if(n==0) return 1;     
    return n*fun(n-1);
 }

int main(){
  int t,t1;
  printf("输入参加阶乘的数:\n");
  scanf("%d",&t);
  t1 = fun(t);
  printf("数字%d的阶乘为:%d\n",t,t1);
}

[root@localhost ~]#./t
输入参加阶乘的数:
6
数字6的阶乘为:720

三、递归算法注意事项

3.1 递归算法必须拥有一个结束标志,否则递归循环将会无止尽的执行,例(if(n==0) return 1 就是递归的结束标志。
3.2 递归算法适用于事物本身就具有递归性,
例(设计一个部门表(部门id ,父级Id,部门名称))
fun(父级id){
list t =符合条件的部门信息;
if(t.length ==0){return;} //递归终止标志
for(i=0;i

算法简介


算法简介

算法是用来解决某一问题的计算方法。
算法的重要属性包括有效性、准确性、终止性、高效性、程序完整性。


算法有效性

算法有效性:根据算法的描述可以精准的产生一个计算机程序,比如我们绘制NS流程图,元语言代码编写。
如果可以通过这些准确的翻译成计算机语言,那么我们就把这一属性称之为算法的有效性。


算法准确性

我们可以通过一个算法获取一个准确的答案。


算法的终止性

通过一个算法,我们可以获取一个正确的结果,但是我们也需要在获取正确结果后,算法能够得到有效的终止,如果算法无限制的运行下去,
那么这种算法,我们则称之为死循环。


算法的复杂性

这个主要说明,算法既要写的精炼,也要编写的易于理解。