桶排序

整体思路:桶先排好序,再往桶里放数字,最后从头到尾依序输出

 

 1 /*  Version:0.1  
 2     Date:2017年1月2日  
 3     Author:
 4     function:输入5个1000以内的数字,并排序
 5 */
 6 
 7 #include <stdio.h>  
 8 #include <stdlib.h>   
 9 
10 int main()  
11 {
12     int a[1001], i, t;
13   
14     //初始化数组
15     for(i=0; i<=1000; i++)
16         a[i] = 0;
17   
18     // 循环读入5个数,并进行桶排序
19     for(i=1; i<=5; i++)
20     {
21         scanf("%d", &t);    //把每一个数读到变量t中
22         a[t]++;    //进行计数,对编号为t的桶放一个小旗子
23     }
24     
25     for(i=0; i<=1000; i++)
26            for(t=1; t<=a[i]; t++)    //出现了几次就将桶的编号打印几次
27                printf("%d ", i);
28   
29     getchar();getchar();
30     return 0;  
31 }

 

时间复杂度

设:为桶的个数,N 为待排序数的个数

则:16行循环了 次,21行循环了 次,26和27行一共循环了 M+次,所以:时间复杂度为 O(2*(M+N)),即:O(M+N)

posted @ 2017-01-02 20:15  一光年の  阅读(135)  评论(0)    收藏  举报