每天学习算法 一
从今天开始每天学习两种算法
第一天学习的是《啊哈!算法》 是一本通俗易懂的算法书籍
算法一:简易桶排序
核心思想:创建数组,使用数组对数值进行排序,例如数值100以内排序,首先创建一个数组 数组含101个值 0~100 例如 int a[101] ,(数组里面的值就是我们的“桶”了)然后利用循环,把对应的值给到对应的桶里,例如5就放在数组 a[5]里面,有一个5的值桶的值就+1,最后再对桶的值编号值进行顺序输出。得出排序的结果
缺点:如果数值过大,比如需要排序1到2000000里的值,就需要创建2000000多的变量值的桶,极其耗费内存。若数值出现名称无法兼顾数值所代表的名称。
#include <stdio.h> int main() { int a[101],i,j,t; for(i=0;i<=10;i++) a[i]=0; //初始化为0 for(i=1;i<=5;i++) //循环读入5个数 { scanf("%d",&t); //把每一个数读到变量t中 a[t]++; //进行计数 } for(i=0;i<=10;i++) //依次判断a[0]~a[10] for(j=1;j<=a[i];j++) //出现了几次就打印几次 printf("%d ",i); return 0; }