基数排序

来源:互联网 发布:centos安装火狐浏览器 编辑:程序博客网 时间:2024/06/15 05:51
//基数排序,以数组的形式储存#include<iostream>using namespace std;void radix(int a[],int len){int i;int j;int k=2;//输入的数是长为2位int r=10;int rtock;int count[10];int *elem;elem=(int *)malloc(sizeof(int)*len);for(i=0,rtock=1;i<k;++i,rtock*=r){   //初始化记录空间for(j=0;j<r;++j)count[j]=0;//记录每一个盒子中存入的数据for(j=0;j<len;++j)count[(a[j]/rtock)%r]++;//为一个盒子分配地址位置for(j=1;j<r;++j)count[j]=count[j-1]+count[j];//此次的--运算,在下方有测试for(j=len-1;j>=0;j--)                elem[--count[(a[j]/rtock)%r]]=a[j];for(j=0;j<len;++j)a[j]=elem[j];}}int main(){int a[]={3,4,56,90,23,34,43,23,28,12,49,89};int i;int len=sizeof(a)/sizeof(int);radix(a,len);    for(i=0;i<len;++i) cout<<a[i]<<endl;//测试--cout<<"Testing -- :"<<endl;int aa[]={2,3,4,5};--aa[3];for(i=0;i<4;++i)cout<<aa[i]<<endl;    return 0;} 
本算法主要参照《数据结构与算法分析》上完成的.
原创粉丝点击