【16】算法(桶排序)

  • 桶排序是一种空间换取时间的排序,不是一种基于比较的排序,最好的情况下时间复杂度是O(n);
  • java思路:用List[]类型的集合数组表示桶,每个List代表一个桶,将数据根据整除得到的值直接放到对应编号的集合里面,再依次排序;
  • 桶排序思想:把数据分组,放在一个个的桶里面,然后对每个桶里面的数据再进行排序;
void BaseSort()
{
    int a[11], i, j, t;
    for (i=0; i<=10; i++) {
        a[i] = 0;
    }   
    printf("请输入10以内的数字:
");

    for (i=1; i<=5; i++) {
        scanf("%d", &t);
        a[t]++;
    }   

    for (i=0; i<=10; i++) {
        for (j=1; j<=a[i]; j++) {
            printf("%d  ", i); 
        }   
    }   
    getchar();
    getchar();
}

void AdvanceSort()
{
    int a[1001], i, j, t, n;
    for (i=0; i<=1000; i++) {
        a[i] = 0;
    }

    scanf("%d", &n);
    printf("请输入%d个数:
", n);
    for (i=1; i<=n; i++) {
        scanf("%d", &t);
        a[t]++;
    }

    for (i=1000; i>=0; i--) {
        for (j=1; j<=a[i]; j++) {
            printf("%d ", i);
        }
    }
    getchar();
    getchar();
}

int main() {
    AdvanceSort();
    return 0;
}

 

参考链接:

https://www.techug.com/post/fastest-most-simple-sort-sort-algorithm.html

做一个优秀的程序媛
原文地址:https://www.cnblogs.com/oytt/p/15264403.html