首页 > 编程语言 > 详细

线性时间排序--桶排

时间:2017-02-18 14:34:36      阅读:188      评论:0      收藏:0      [点我收藏+]

1、桶排序

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

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

  (1)、代码实现

#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)、结果截图

技术分享

  (3)、算法分析

  时间复杂度:O(n);



本文出自 “wait0804” 博客,请务必保留此出处http://wait0804.blog.51cto.com/11586096/1899020

线性时间排序--桶排

原文:http://wait0804.blog.51cto.com/11586096/1899020

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!