线性时间排序--桶排

一、桶排序算法

  能够排序的范围数较小,是一种以空间换时间的排序算法;ide

  不考虑重复元素的出现---->桶排;解决方案在计数排序;
spa

  (1)、代码实现blog

#include<stdio.h>

void bucketSort(int *a, int count);
void showArray(int *a, int count);

void showArray(int *a, int count){
    int i;

    for(i = 0; i < count; i++){
        printf("%d ", a[i]);
    }
    printf("\n");
}

void bucketSort(int *a, int count){
    int b[10] = {0};  //知道要排序值的最大范围
    int i;
    int n = 0;

    for(i = 0; i < count; i++){
        b[a[i]]++;
    }

    for(i = 0; i < 10; i++){
        if(b[i]){
            a[n++] = i;
        }
    }
}

void main(void){
    int a[] = {3, 5, 1, 8, 9, 6};
    int count = sizeof(a)/sizeof(int);

    bucketSort(a, count);
    showArray(a, count);
}

  (2)、结果截图排序

wKiom1in2jGw4B6GAAATehBikxo765.png-wh_50

  (3)、算法分析get

  时间复杂度:O(n);
it

相关文章
相关标签/搜索