码迷,mamicode.com
首页 > 编程语言 > 详细

桶排序

时间:2020-05-16 12:42:34      阅读:67      评论:0      收藏:0      [点我收藏+]

标签:splay   center   using   webkit   rand   cpp   func   mono   web   

桶排序

排序思想: 首先通过最大最小值数据范围 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:\n");
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?‘\n‘:‘ ‘);
49    bucketSort(a,n);
50    return 0;
51}

桶排序

标签:splay   center   using   webkit   rand   cpp   func   mono   web   

原文地址:https://www.cnblogs.com/HappyKnockOnCode/p/12899796.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!