实用标准文案
#include
#define MAXNUM 100 #define RADIX 10 #define MAX 8
#define MAX_SPACE 10000 typedef int KeysType; typedef struct { KeysType keys[MAX]; int next; }SLCell;
typedef struct {
SLCell r[MAX_SPACE]; int keynum; int recnum; }SLList;
typedef int ArrType[RADIX];
typedef struct { int key; } datatype;
datatype R[MAXNUM];//定义结构体数组 int cn[11]={0}; int mn[11]={0};
void CreateSLList(SLList &L,int n,datatype R[ ]) //基数排序 { L.recnum=n; L.keynum=3; mn[10]+=2;
//printf(\ //scanf(\
//printf(\ //scanf(\
//printf(\ for(int i=1;i<=L.recnum;i++) { cn[10]++;
int j=L.keynum-1;
精彩文档
实用标准文案
L.r[i].keys[j--]=R[i].key/100; L.r[i].keys[j--]=R[i].key0/10; L.r[i].keys[j]=R[i].key; mn[10]+=3; }
for(i=0;i L.r[i].next=i+1; cn[10]++; mn[10]++; } L.r[L.recnum].next=0; mn[10]++; } void Display(SLList L) //基数排序 { L.keynum=3; mn[10]++; for(int i=L.r[0].next;i;i=L.r[i].next) { cn[10]++; for(int j=L.keynum-1;j>=0;j--) { printf(\ cn[10]++; } cn[10]++; printf(\ } cn[10]++; printf(\ } void Distribute(SLCell (&r)[MAX_SPACE],int i,ArrType &f,ArrType &e) //基数排序 { int j,p; for(j=0;j 精彩文档 实用标准文案 } cn[10]++; for(p=r[0].next;p;p=r[p].next) { cn[10]++; j=r[p].keys[i]; mn[10]++; if (!f[j]) { f[j]=p; mn[10]++; } else { r[e[j]].next=p; mn[10]++; } e[j]=p; mn[10]++; } cn[10]++; } void Collect(SLCell (&r)[MAX_SPACE],int i,ArrType f,ArrType e) //基数排序 { int j,t; for(j=0;!f[j];j++); { cn[10]++; r[0].next=f[j]; mn[10]++; } cn[10]++; t=e[j]; mn[10]++; while (j for(j++;j r[t].next=f[j]; 精彩文档 实用标准文案 t=e[j]; mn[10]+=2; } } cn[10]++; } cn[10]++; r[t].next=0; mn[10]++; } void RadixSort(SLList &L) //基数排序 { int i; L.keynum=3; mn[10]++; ArrType f,e; for(i=0;i Distribute(L.r,i,f,e); Collect(L.r,i,f,e); //printf(\第%d趟收集后:\\n\ //Display(L); printf(\ } cn[10]++; } void A(datatype R[ ], int n)//基数排序**** { SLList L; CreateSLList(L, n,R); //printf(\排序前的结果是:\\n\ //Display(L); RadixSort(L); //printf(\排序后的结果是:\\n\ //Display(L); } void D_InsertSort(datatype R[ ], int n)//直接排序 { int i,j; 精彩文档
相关推荐: