基数排序
来源:互联网 发布:淘宝客新手教程视频 编辑:程序博客网 时间:2024/05/19 08:36
#include<stdio.h>#define dd 4#define rr 10#define nn 11struct data{char key[dd];int next;}R[nn];struct pointer{int f;int e;}Q[rr];void init(int n){int i;for(i=0;i<n-1;i++) R[i].next=i+1;R[n-1].next=0;printf("/ninput%ddata(<=%d bit)to sort:/n",nn-1,dd-1);for(i=1;i<n;i++)scanf("%s",R[i].key);}int divsort(){ int p=1; int k,temp; int i,j; for(i=dd-2;i>=0;i--) {for(j=0;j<rr;j++) {Q[j].f=0;Q[j].e=0;} while(p>0){ k=R[p].key[i]-48; if(!Q[k].f){Q[k].f=p;Q[k].e=p;} else{R[Q[k].e].next=p;Q[k].e=p;} p=R[p].next;} j=0; while(Q[j].f==0) j=succ(j); p=Q[j].f; temp=Q[j].e; k=succ(j); while(k<rr) {if(Q[k].f){R[temp].next=Q[k].f; temp=Q[k].e; } k=succ(k);} R[temp].next=0; printf("/n%d-time collect/n",dd-i-1); display(p); } return(p);}int succ(int j){return(j+1);}
display(int thead){ int i=thead;while(i){printf("%s",R[i].key);i=R[i].next;}printf("/n");}main(){int head=1;init(nn);printf("/nThe original data/n");display(head);getchar();head=divsort();printf("/nThe sorted data:/n");display(head);getchar();}
- 基数排序
- 基数排序
- 基数排序
- 基数排序
- 基数排序
- 基数排序
- 基数排序
- 基数排序
- 基数排序
- 基数排序
- 基数排序
- 基数排序
- 基数排序
- 基数排序
- 基数排序
- 基数排序
- 基数排序
- 基数排序
- 快速排序
- 通道总是处于Retrying状态的解决方式
- 面向接口编程详解(三)——模式研究
- CLI-I-0 前言
- 图象一些算法
- 基数排序
- 千一网络发布 QuickAjax
- 迷灯的算法
- 暂停Action,返回客户端,问用户是否继续Action下面的操作
- 栈的基本算法
- 《QuickTest Professional Tutorial》读书笔记(10)
- fedora 9中文输入法
- 一道竞赛题
- jQuery DOM操作方法的简单归纳