桶排序

Posted happyknockoncode

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了桶排序相关的知识,希望对你有一定的参考价值。

桶排序

排序思想: 首先通过最大最小值数据范围 maxx-minn 按照每个桶平均装的数量 得出桶的数量。然后遍历数组 a[ ] ,装入桶中,进行桶内排序。

 1#include<vector>
2#include<stdio.h>
3#include<time.h>
4#include<stdlib.h>
5#include<algorithm>
6using namespace std;
7void bucketSort(int a[],int n)
8
{
9    int maxx=-9999,minn=9999;
10    for(int i=0; i<n; i++)
11    {
12        if(maxx<a[i])
13            maxx=a[i];
14        if(minn>a[i])
15            minn=a[i];
16    }
17    /**根据数据范围得出桶的数量(最多10个元素1个桶)*/
18    int bucketNum=maxx/10-minn/10+1;
19
20    vector<int>v[bucketNum];
21    for(int i=0; i<n; i++)
22    {
23        int t=(a[i]-minn)/10;
24        v[t].push_back(a[i]);
25    }
26
27    printf("Sort Over: ");
28    for(int i=0; i<bucketNum; i++)
29    {
30        /**
31        桶内排序,可以插入排序,也可以用排序函数
32        */

33        if(v[i].size())
34        {
35            sort(v[i].begin(),v[i].end());
36            for(int j=0; j<v[i].size(); j++)
37                printf("%d ",v[i][j]);
38        }
39    }
40}
41int main()
42
{
43    int n=10;
44    int a[12];
45    for(int i=0; i<n; i++)
46        a[i]=rand()%7+1;
47    for(int i=0;i<n;i++)
48        printf("%d%c",a[i],i==n-1?‘ ‘:‘ ‘);
49    bucketSort(a,n);
50    return 0;
51}



















































以上是关于桶排序的主要内容,如果未能解决你的问题,请参考以下文章

桶排序代码

桶排序和计数排序

线性排序:桶排序计数排序

线性排序:桶排序计数排序

排序算法——桶排序

python桶排序代码