基于桶排序的基数排序
来源:互联网 发布:网络大电影预算表图 编辑:程序博客网 时间:2024/05/16 23:49
基于桶排序的基数排序时间复杂度可以控制在O(N),空间为N,同时还以一种稳定的排序算法。至于原理这里就不赘述了,网上很多,可以自己看看,这里贴出我实现的程序。
//使用桶排序和基数排序进行排序//时间的d*2n d:元素的最大位数 n:元素的个数#include "stdafx.h"#include <iostream>#include <list>#include <math.h>#include <time.h>using namespace std;#define LENGTH 100000void BucketSort(int *arr, int length, int position){list<int> buck[10]; //按基数10排序,需要10个桶for(int i=0;i!=length;i++){int k=(arr[i]/(int)pow(double(10),position))%10;buck[k].push_back(arr[i]);}int k=0;//将桶中的元素放回到数组中 for(int i=0;i!=10;i++){while(!buck[i].empty()){arr[k]=*(buck[i].begin());buck[i].pop_front();k++;}}}void RadixSort(int *arr, int length, int weight){if(arr==NULL||length<=0)return;for(int i=0;i<weight;i++) //进行weight趟排序BucketSort(arr,length,i);}int _tmain(int argc, _TCHAR* argv[]){srand((unsigned int)time(NULL));int *arr=new int[LENGTH];for(int i=0;i!=LENGTH;i++){arr[i]=rand();}RadixSort(arr,LENGTH,5);for(int i=1;i!=LENGTH;i++){cout<<arr[i]<<endl;}return 0;}
- 基于桶排序的基数排序
- 基于计数排序的基数排序
- 基于桶式排序的基数排序Java实现
- 基于计数排序的基数排序算法
- 基于计数排序子程序的基数排序实现
- 三种线性的非基于比较的排序算法:计数排序、桶排序与基数排序
- 三种线性的非基于比较的排序算法:计数排序、桶排序与基数排序
- 三种线性的非基于比较的排序算法:计数排序、桶排序与基数排序
- 三种基于“分配”“收集”的线性排序算法---计数排序、桶排序与基数排序
- 基于非比较的排序:计数排序(countSort),桶排序(bucketSort),基数排序(radixSort)
- 位排序 -- 基于计数排序和基数排序产生的特例
- 基数排序(基于计数排序)
- 算法实践篇-基于计数排序的基数排序
- 基于JAVA的排序算法之九--基数排序
- scala数据结构和算法-09-基于插入排序的基数排序
- 基于数组的基数排序
- 基数排序(桶式排序的扩展?)
- 基数排序、桶排序
- hdu 4057 Rescue the Rabbit
- ffmpeg源码分析之三avformat_open_input()上
- 迭代器
- 基础加强12-16
- tornado学习: 外部服务验证
- 基于桶排序的基数排序
- IT人员转行写小白文可以么?
- S3C6410加了去抖的按键驱动程序
- 仿真进展
- 安装sqlserver2008 R2 RTM
- Android之Tab分页标签的实现方法-----采用ActivityGroup和GridView的结合
- 飘逸的python - 增强的格式化字符串format函数
- FusionChart三维立体图之折线图
- JAVA操作XML文件例子代码