33,007
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#define MAX 1000000
void fun(int *p,int *q,int start,int end , int hashn){
int n=start;
int m=end-1;
int i;
for(i=start;i<end;i++){
if((p[i]&hashn) == 0){
q[n++] = p[i];
}else {
q[m--] = p[i];
}
}
for(i=start;i<end;i++){
p[i]= q[i];
}
if(hashn == 1){
return ;
} else {
int tempn = hashn >>1;
if(start<n)
fun(p,q,start,n,tempn);
if(m<end)
fun(p,q,m+1,end,tempn);
}
}
void main(){
unsigned int arr[MAX];
unsigned int temp[MAX];
clock_t startt,finish;
unsigned int hashn = 0x8000;
srand(time(0));
int i;
printf("开始随机生成数组%ld\n",clock());
for(i=0;i<MAX;i++){
arr[i]= rand()&32760;
}
printf("结束随即生成数组%ld\n",clock());
startt = clock();
fun(arr,temp,0,MAX,hashn);
finish = clock();
printf("执行时长%f\n",(double)(finish-startt)/CLOCKS_PER_SEC);
}