哈夫曼树应用案例 优化代码

182 阅读1分钟

最近学了哈夫曼树数据结构算法,通过哈夫曼树可以优化代码提高运行时间,有所感触特此记录。

根据分数评判等级: 


正常思维:

if(grade<60)
printf("不及格\n");
else if(grade<70)
printf("及格\n");
else if(grade<80)
printf("中等\n");
else if(grade<90)
printf("良好\n");
else
printf("优秀\n");

但如果记录全校1000个同学的成绩,甚至更多?


可以记录该校各个学生的各成绩占的比例,将分数分割成若干个,并计算各成绩在该成绩段上占的比例。显然用如下该逻辑结构更合理:


代码如下:

if(grade<80){
  if(grade>70)
  printf("中等\n");  else if(grade>60)
  printf("及格\n"); else
  printf("不及格\n"); 
}
else{
 if(grade<90)
 printf("良好\n");
 else
printf("优秀\n");
}

该代码先判断成绩所占比例最大的,在依次判断依次所占的比例。


通过wpl计算假设有100个学生,第2种方法比第1种方法运行速度快将近1/3。代码效率更高。

如果人数1万甚至更多,这将大大提高代码速度以及减少服务器的开销。