33,311
社区成员
发帖
与我相关
我的任务
分享
#include<stdlib.h>
#include<time.h>
#include<iostream>
#include<string.h>
using namespace std;
#define SIZE 10
void SortArrey( int [] );
int main()
{
int i = 0;
int origin[SIZE];
//分配内存空间
memset( origin, 0, sizeof(origin) );
//生成随机数
srand( time(NULL) ); //#include<time.h><stdlib.h>
for( i = 0; i <= SIZE-1; i++ ) {
origin[i] = rand() % 1000 + 1;
}
//显示origin[]
printf( "The origin arrey is: \n" );
for( i = 0; i <= SIZE-1; i++ ) {
printf( "%4d", origin[i] );
}
printf( "\n\n" );
//调用排序函数
SortArrey( origin );
printf( "\n\n" );
system( "pause" );
return 0;
}
void SortArrey( int origin[] )
{
int i, j = 0;
int m, n = 0;
int dest[SIZE][SIZE] = {0};
int a[SIZE] = {0};
int max, bitcount = 0, temp = 1;
//取出最大值
max = origin[0];
for( i = 1; i <= SIZE-1; i++ ) {
if( origin[i] > max ) {
max = origin[i];
}
}
//取最高的位数
while( (max / temp) != 0 ) {
bitcount++;
temp *= 10;
}
//赋值
for( i = 0; i <= SIZE-1; i++ ) {
a[i] = origin[i];
}
temp = 1;
while( bitcount != 0 ) {
//将a数组排序到dest[][]中
for( i = 0; i <= SIZE-1; i++ ) {
if( temp == 1 )
dest[a[i] % 10][i] = a[i];
else {
dest[(a[i]/temp) % 10][i] = a[i];
}
}
//将排好序的dest返回至a[]中
for( m = 0; m <= SIZE-1; m++ ) {
for( n = 0; n <= SIZE-1; n++ ) {
if( dest[m][n] != 0 ) {
a[j] = dest[m][n];
j++;
}
}
}
j=0;
temp *= 10;
bitcount--;
//清零dest[][]
for( m = 0; m <= SIZE-1; m++ ) {
for( n = 0; n <= SIZE-1; n++ ) {
dest[m][n] = 0;
}
}
}
//显示a[]
printf( "The sort arrey is: \n" );
for( i = 0; i <= SIZE-1; i++ ) {
printf( "%4d", a[i] );
}
}
for (i = 0; i <= SIZE-1; i++)
dest[(a[i]/temp) % 10][i] = a[i];