首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

基数排序简明演示

2012-08-29 
基数排序简要演示基数排序原理也很简单,一般分为最低位优先和最高位先,这里采用最低位先从个位开始按序分

基数排序简要演示

基数排序原理也很简单,一般分为最低位优先和最高位先,这里采用最低位先

从个位开始按序分配,再收集,十位、百位往复、、、

附上演示代码如下:

#include<iostream>using namespace std;#include<cmath>typedef struct Node{int data;Node *p;}NODE;NODE *h[10];int a[10]={75,233,98,44,537,132,29,64,38,82};void init(){for(int i=0;i<10;i++){h[i]=(NODE *)malloc(sizeof(NODE));h[i]->data=-1;h[i]->p=NULL;}}void display(){for(int i=0;i<10;i++)cout<<a[i]<<" ";cout<<endl;}void addnode(NODE *point,int x){while(point->p!=NULL)point=point->p;NODE *nod=(NODE*)malloc(sizeof(NODE));nod->p=NULL;nod->data=x;point->p=nod;}void sort(int d)//d是数字最高位数{//int b[10];int i,j;NODE *pl;int x=1;while(x<=d){for(i=0;i<10;i++){j=(a[i]%(int)pow(10,x))/(int)pow(10,x-1);//这一句是经典addnode(h[j],a[i]);}for(i=0,j=0;i<10;i++){pl=h[i]->p;while(pl!=NULL){a[j++]=pl->data;pl=pl->p;}}for(i=0;i<10;i++){h[i]->data=-1;h[i]->p=NULL;}x++;}}int main(){init();sort(3);display();return 0;}


 

热点排行