java桶排序,桶排序的流程图

2023-05-06 21:32:57 阅读:141712 作者: 2478

桶排序也是分配排序的一种,但基于比较排序,也是与基数排序的最大区别。

思想:桶排序算法的思路类似于哈希表。 首先,假设要排序的元素的输入符合某个均匀分布。 例如,如果数据均匀分布在[ 0,1 ]区间,则可以将此区间划分为10个称为桶的小区,并对分布在同一个桶中的元素进行排序。

要求:排序对象数的长度一致。

排序过程:

)1)设置定量排列作为空桶;

)寻找测序,将记录逐一放入对应的桶中;

)3)对每个非空桶进行排序。

)4)从非空桶中将项目恢复到原始数组。

# include iostream # includevectorusingnamespacestd; voidbucketsort(intdata[],int len )//findminxmaxvalueofthearraydataintmin=data [0]; int max=min; for(intI=1; i len; I ) if(data[I]min ) min=data[i]; if(data[I]max ) max=data[i]; } //get the bucket counts; intbucketcounts=(max-min )/len 1; vectorvectorint bucketArrays; for(intI=0; i bucketCounts; I )//position0usedtokeepthedatacountstoreinthisbucketvectorintbucket; bucketArrays.push_back(bucket ); //assigneachvaluetobucketarrays.for (intj=0; j len; j({intnum=(data[j]-min )/len; bucket arrays [ num ].push _ back (data [ j ]; //sorteachbucketfor(intI=0; i bucketCounts; I ) STD :3360 sort (bucket arrays [ I ].begin (,bucketArrays[i].end ) ); (} int index=0; //collectvaluefromradixarraystodatafor (intk=0; k bucketCounts; k ) for(ints=0; s bucketArrays[k].size (; s } { data [ index ]=bucket arrays [ k ] [ s ]; } }}int main () intARR(10 )={ 18,11,28,45,23,50 }; bucketsort(ARR,6 ); for(intI=0; i 6; I ) cout arr[i] endl; 返回0; }

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。

标签: 流程图   java

Copyright © 2022 恩蓝号 Inc. 保留所有权利。 Powered by 恩蓝号

页面耗时0.0205秒, 内存占用107.28 KB, 访问数据库2次