|
|
|
@ -0,0 +1,61 @@
|
|
|
|
|
#include <stdio.h>
|
|
|
|
|
#include <stdlib.h>
|
|
|
|
|
#include <time.h>
|
|
|
|
|
|
|
|
|
|
#define N 300000000 //Ԫ<>ظ<EFBFBD><D8B8><EFBFBD>
|
|
|
|
|
#define M 100 //Ԫ<><D4AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>ӡ
|
|
|
|
|
void arr_print(int* arr)
|
|
|
|
|
{
|
|
|
|
|
int i;
|
|
|
|
|
for(i=0;i<N;i++)
|
|
|
|
|
{
|
|
|
|
|
printf("%3d",arr[i]);
|
|
|
|
|
}
|
|
|
|
|
printf("\n");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͳ<EFBFBD>ƴ<EFBFBD><C6B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
void sort_count(int* arr)
|
|
|
|
|
{
|
|
|
|
|
int i,j,k;
|
|
|
|
|
//ͳ<><CDB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>и<EFBFBD>Ԫ<EFBFBD>س<EFBFBD><D8B3>ֵĴ<D6B5><C4B4><EFBFBD>
|
|
|
|
|
int count[M]={0};
|
|
|
|
|
for(i=0;i<N;i++)
|
|
|
|
|
{
|
|
|
|
|
//˫<><CBAB><EFBFBD>±<EFBFBD>֮<EFBFBD><D6AE><EFBFBD>Ԫ<EFBFBD><D4AA>ֵ++<2B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ľ<EFBFBD><C4BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
count[arr[i]]++; //<2F>ɺϣ<C9BA><CFA3>±<EFBFBD>ֵ<EFBFBD><D6B5>Ԫ<EFBFBD><D4AA>ֵ<EFBFBD><D6B5>Ӧ
|
|
|
|
|
}
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
k=0; //<2F><><EFBFBD><EFBFBD>Ԫ<EFBFBD>ط<EFBFBD><D8B7><EFBFBD>λ<EFBFBD><CEBB>
|
|
|
|
|
for(i=0;i<M;i++) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD>ؽ<EFBFBD><D8BD><EFBFBD>
|
|
|
|
|
{
|
|
|
|
|
for(j=0;j<count[i];j++) //<2F>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
{
|
|
|
|
|
arr[k++]=i; //k++<2B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>iֵ
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int main()
|
|
|
|
|
{
|
|
|
|
|
int i;
|
|
|
|
|
int *arr=(int*)malloc(N*sizeof(int));
|
|
|
|
|
time_t start,end;
|
|
|
|
|
srand((unsigned int)time(NULL));
|
|
|
|
|
for(i=0;i<N;i++)
|
|
|
|
|
{
|
|
|
|
|
arr[i]=rand()%M;
|
|
|
|
|
}
|
|
|
|
|
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɣ<EFBFBD>\n");
|
|
|
|
|
//arr_print(arr);
|
|
|
|
|
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n");
|
|
|
|
|
start=time(NULL);
|
|
|
|
|
sort_count(arr);
|
|
|
|
|
end=time(NULL);
|
|
|
|
|
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>%d s\n", end-start);
|
|
|
|
|
//arr_print(arr);
|
|
|
|
|
system("pause");
|
|
|
|
|
return 0;
|
|
|
|
|
}
|